From 0a670e90f86d147f33a90c9be691f2783abc3db8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20R=C3=B6nnblom?= Date: Sat, 26 Oct 2024 14:20:21 +0200 Subject: [PATCH] Latest documentation --- .nojekyll | 0 api/0.0/bc_s.png | Bin 0 -> 676 bytes api/0.0/bc_sd.png | Bin 0 -> 635 bytes api/0.0/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + api/0.0/doc.svg | 12 + api/0.0/docd.svg | 12 + api/0.0/doxygen.css | 2045 +++++++++++++++++ api/0.0/doxygen.svg | 28 + api/0.0/dynsections.js | 192 ++ api/0.0/files.html | 91 + api/0.0/folderclosed.svg | 11 + api/0.0/folderclosedd.svg | 11 + api/0.0/folderopen.svg | 17 + api/0.0/folderopend.svg | 12 + api/0.0/globals.html | 120 + api/0.0/globals_enum.html | 81 + api/0.0/globals_eval.html | 83 + api/0.0/globals_func.html | 114 + api/0.0/globals_type.html | 82 + api/0.0/index.html | 176 ++ api/0.0/jquery.js | 34 + api/0.0/menu.js | 136 ++ api/0.0/menudata.js | 36 + api/0.0/minus.svg | 8 + api/0.0/minusd.svg | 8 + api/0.0/nav_f.png | Bin 0 -> 153 bytes api/0.0/nav_fd.png | Bin 0 -> 169 bytes api/0.0/nav_g.png | Bin 0 -> 95 bytes api/0.0/nav_h.png | Bin 0 -> 98 bytes api/0.0/nav_hd.png | Bin 0 -> 114 bytes api/0.0/open.png | Bin 0 -> 123 bytes api/0.0/paf_8h.html | 544 +++++ api/0.0/paf_8h_source.html | 152 ++ api/0.0/paf__err_8h_source.html | 118 + api/0.0/paf__match_8h.html | 162 ++ api/0.0/paf__match_8h_source.html | 129 ++ api/0.0/paf__props_8h.html | 580 +++++ api/0.0/paf__props_8h_source.html | 160 ++ api/0.0/paf__value_8h.html | 355 +++ api/0.0/paf__value_8h_source.html | 139 ++ api/0.0/plus.svg | 9 + api/0.0/plusd.svg | 9 + api/0.0/search/all_0.js | 4 + api/0.0/search/all_1.js | 6 + api/0.0/search/all_2.js | 7 + api/0.0/search/all_3.js | 6 + api/0.0/search/all_4.js | 4 + api/0.0/search/all_5.js | 4 + api/0.0/search/all_6.js | 4 + api/0.0/search/all_7.js | 46 + api/0.0/search/all_8.js | 5 + api/0.0/search/all_9.js | 6 + api/0.0/search/all_a.js | 6 + api/0.0/search/close.svg | 18 + api/0.0/search/enums_0.js | 4 + api/0.0/search/enumvalues_0.js | 6 + api/0.0/search/files_0.js | 7 + api/0.0/search/functions_0.js | 35 + api/0.0/search/mag.svg | 24 + api/0.0/search/mag_d.svg | 24 + api/0.0/search/mag_sel.svg | 31 + api/0.0/search/mag_seld.svg | 31 + api/0.0/search/pages_0.js | 4 + api/0.0/search/pages_1.js | 4 + api/0.0/search/pages_2.js | 4 + api/0.0/search/pages_3.js | 4 + api/0.0/search/search.css | 291 +++ api/0.0/search/search.js | 840 +++++++ api/0.0/search/searchdata.js | 33 + api/0.0/search/typedefs_0.js | 5 + api/0.0/splitbar.png | Bin 0 -> 314 bytes api/0.0/splitbard.png | Bin 0 -> 282 bytes api/0.0/sync_off.png | Bin 0 -> 853 bytes api/0.0/sync_on.png | Bin 0 -> 845 bytes api/0.0/tab_a.png | Bin 0 -> 142 bytes api/0.0/tab_ad.png | Bin 0 -> 135 bytes api/0.0/tab_b.png | Bin 0 -> 169 bytes api/0.0/tab_bd.png | Bin 0 -> 173 bytes api/0.0/tab_h.png | Bin 0 -> 177 bytes api/0.0/tab_hd.png | Bin 0 -> 180 bytes api/0.0/tab_s.png | Bin 0 -> 184 bytes api/0.0/tab_sd.png | Bin 0 -> 188 bytes api/0.0/tabs.css | 1 + api/0.1/bc_s.png | Bin 0 -> 676 bytes api/0.1/bc_sd.png | Bin 0 -> 635 bytes api/0.1/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + api/0.1/doc.svg | 12 + api/0.1/docd.svg | 12 + api/0.1/doxygen.css | 2045 +++++++++++++++++ api/0.1/doxygen.svg | 28 + api/0.1/dynsections.js | 192 ++ api/0.1/files.html | 91 + api/0.1/folderclosed.svg | 11 + api/0.1/folderclosedd.svg | 11 + api/0.1/folderopen.svg | 17 + api/0.1/folderopend.svg | 12 + api/0.1/globals.html | 121 + api/0.1/globals_enum.html | 81 + api/0.1/globals_eval.html | 83 + api/0.1/globals_func.html | 115 + api/0.1/globals_type.html | 82 + api/0.1/index.html | 213 ++ api/0.1/jquery.js | 34 + api/0.1/menu.js | 136 ++ api/0.1/menudata.js | 36 + api/0.1/minus.svg | 8 + api/0.1/minusd.svg | 8 + api/0.1/nav_f.png | Bin 0 -> 153 bytes api/0.1/nav_fd.png | Bin 0 -> 169 bytes api/0.1/nav_g.png | Bin 0 -> 95 bytes api/0.1/nav_h.png | Bin 0 -> 98 bytes api/0.1/nav_hd.png | Bin 0 -> 114 bytes api/0.1/open.png | Bin 0 -> 123 bytes api/0.1/paf_8h.html | 593 +++++ api/0.1/paf_8h_source.html | 155 ++ api/0.1/paf__err_8h_source.html | 118 + api/0.1/paf__match_8h.html | 162 ++ api/0.1/paf__match_8h_source.html | 129 ++ api/0.1/paf__props_8h.html | 580 +++++ api/0.1/paf__props_8h_source.html | 160 ++ api/0.1/paf__value_8h.html | 355 +++ api/0.1/paf__value_8h_source.html | 139 ++ api/0.1/plus.svg | 9 + api/0.1/plusd.svg | 9 + api/0.1/search/all_0.js | 5 + api/0.1/search/all_1.js | 6 + api/0.1/search/all_2.js | 8 + api/0.1/search/all_3.js | 6 + api/0.1/search/all_4.js | 5 + api/0.1/search/all_5.js | 5 + api/0.1/search/all_6.js | 4 + api/0.1/search/all_7.js | 47 + api/0.1/search/all_8.js | 5 + api/0.1/search/all_9.js | 7 + api/0.1/search/all_a.js | 7 + api/0.1/search/close.svg | 18 + api/0.1/search/enums_0.js | 4 + api/0.1/search/enumvalues_0.js | 6 + api/0.1/search/files_0.js | 7 + api/0.1/search/functions_0.js | 36 + api/0.1/search/mag.svg | 24 + api/0.1/search/mag_d.svg | 24 + api/0.1/search/mag_sel.svg | 31 + api/0.1/search/mag_seld.svg | 31 + api/0.1/search/pages_0.js | 4 + api/0.1/search/pages_1.js | 4 + api/0.1/search/pages_2.js | 4 + api/0.1/search/pages_3.js | 4 + api/0.1/search/search.css | 291 +++ api/0.1/search/search.js | 840 +++++++ api/0.1/search/searchdata.js | 33 + api/0.1/search/typedefs_0.js | 5 + api/0.1/splitbar.png | Bin 0 -> 314 bytes api/0.1/splitbard.png | Bin 0 -> 282 bytes api/0.1/sync_off.png | Bin 0 -> 853 bytes api/0.1/sync_on.png | Bin 0 -> 845 bytes api/0.1/tab_a.png | Bin 0 -> 142 bytes api/0.1/tab_ad.png | Bin 0 -> 135 bytes api/0.1/tab_b.png | Bin 0 -> 169 bytes api/0.1/tab_bd.png | Bin 0 -> 173 bytes api/0.1/tab_h.png | Bin 0 -> 177 bytes api/0.1/tab_hd.png | Bin 0 -> 180 bytes api/0.1/tab_s.png | Bin 0 -> 184 bytes api/0.1/tab_sd.png | Bin 0 -> 188 bytes api/0.1/tabs.css | 1 + api/head/bc_s.png | Bin 0 -> 676 bytes api/head/bc_sd.png | Bin 0 -> 635 bytes api/head/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + api/head/doc.svg | 12 + api/head/docd.svg | 12 + api/head/doxygen.css | 2045 +++++++++++++++++ api/head/doxygen.svg | 28 + api/head/dynsections.js | 192 ++ api/head/files.html | 91 + api/head/folderclosed.svg | 11 + api/head/folderclosedd.svg | 11 + api/head/folderopen.svg | 17 + api/head/folderopend.svg | 12 + api/head/globals.html | 121 + api/head/globals_enum.html | 81 + api/head/globals_eval.html | 83 + api/head/globals_func.html | 115 + api/head/globals_type.html | 82 + api/head/index.html | 213 ++ api/head/jquery.js | 34 + api/head/menu.js | 136 ++ api/head/menudata.js | 36 + api/head/minus.svg | 8 + api/head/minusd.svg | 8 + api/head/nav_f.png | Bin 0 -> 153 bytes api/head/nav_fd.png | Bin 0 -> 169 bytes api/head/nav_g.png | Bin 0 -> 95 bytes api/head/nav_h.png | Bin 0 -> 98 bytes api/head/nav_hd.png | Bin 0 -> 114 bytes api/head/open.png | Bin 0 -> 123 bytes api/head/paf_8h.html | 593 +++++ api/head/paf_8h_source.html | 155 ++ api/head/paf__err_8h_source.html | 118 + api/head/paf__match_8h.html | 162 ++ api/head/paf__match_8h_source.html | 129 ++ api/head/paf__props_8h.html | 580 +++++ api/head/paf__props_8h_source.html | 160 ++ api/head/paf__value_8h.html | 355 +++ api/head/paf__value_8h_source.html | 139 ++ api/head/plus.svg | 9 + api/head/plusd.svg | 9 + api/head/search/all_0.js | 5 + api/head/search/all_1.js | 6 + api/head/search/all_2.js | 8 + api/head/search/all_3.js | 6 + api/head/search/all_4.js | 5 + api/head/search/all_5.js | 5 + api/head/search/all_6.js | 4 + api/head/search/all_7.js | 47 + api/head/search/all_8.js | 5 + api/head/search/all_9.js | 7 + api/head/search/all_a.js | 7 + api/head/search/close.svg | 18 + api/head/search/enums_0.js | 4 + api/head/search/enumvalues_0.js | 6 + api/head/search/files_0.js | 7 + api/head/search/functions_0.js | 36 + api/head/search/mag.svg | 24 + api/head/search/mag_d.svg | 24 + api/head/search/mag_sel.svg | 31 + api/head/search/mag_seld.svg | 31 + api/head/search/pages_0.js | 4 + api/head/search/pages_1.js | 4 + api/head/search/pages_2.js | 4 + api/head/search/pages_3.js | 4 + api/head/search/search.css | 291 +++ api/head/search/search.js | 840 +++++++ api/head/search/searchdata.js | 33 + api/head/search/typedefs_0.js | 5 + api/head/splitbar.png | Bin 0 -> 314 bytes api/head/splitbard.png | Bin 0 -> 282 bytes api/head/sync_off.png | Bin 0 -> 853 bytes api/head/sync_on.png | Bin 0 -> 845 bytes api/head/tab_a.png | Bin 0 -> 142 bytes api/head/tab_ad.png | Bin 0 -> 135 bytes api/head/tab_b.png | Bin 0 -> 169 bytes api/head/tab_bd.png | Bin 0 -> 173 bytes api/head/tab_h.png | Bin 0 -> 177 bytes api/head/tab_hd.png | Bin 0 -> 180 bytes api/head/tab_s.png | Bin 0 -> 184 bytes api/head/tab_sd.png | Bin 0 -> 188 bytes api/head/tabs.css | 1 + api/latest/bc_s.png | Bin 0 -> 676 bytes api/latest/bc_sd.png | Bin 0 -> 635 bytes api/latest/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + api/latest/doc.svg | 12 + api/latest/docd.svg | 12 + api/latest/doxygen.css | 2045 +++++++++++++++++ api/latest/doxygen.svg | 28 + api/latest/dynsections.js | 192 ++ api/latest/files.html | 91 + api/latest/folderclosed.svg | 11 + api/latest/folderclosedd.svg | 11 + api/latest/folderopen.svg | 17 + api/latest/folderopend.svg | 12 + api/latest/globals.html | 121 + api/latest/globals_enum.html | 81 + api/latest/globals_eval.html | 83 + api/latest/globals_func.html | 115 + api/latest/globals_type.html | 82 + api/latest/index.html | 213 ++ api/latest/jquery.js | 34 + api/latest/menu.js | 136 ++ api/latest/menudata.js | 36 + api/latest/minus.svg | 8 + api/latest/minusd.svg | 8 + api/latest/nav_f.png | Bin 0 -> 153 bytes api/latest/nav_fd.png | Bin 0 -> 169 bytes api/latest/nav_g.png | Bin 0 -> 95 bytes api/latest/nav_h.png | Bin 0 -> 98 bytes api/latest/nav_hd.png | Bin 0 -> 114 bytes api/latest/open.png | Bin 0 -> 123 bytes api/latest/paf_8h.html | 593 +++++ api/latest/paf_8h_source.html | 155 ++ api/latest/paf__err_8h_source.html | 118 + api/latest/paf__match_8h.html | 162 ++ api/latest/paf__match_8h_source.html | 129 ++ api/latest/paf__props_8h.html | 580 +++++ api/latest/paf__props_8h_source.html | 160 ++ api/latest/paf__value_8h.html | 355 +++ api/latest/paf__value_8h_source.html | 139 ++ api/latest/plus.svg | 9 + api/latest/plusd.svg | 9 + api/latest/search/all_0.js | 5 + api/latest/search/all_1.js | 6 + api/latest/search/all_2.js | 8 + api/latest/search/all_3.js | 6 + api/latest/search/all_4.js | 5 + api/latest/search/all_5.js | 5 + api/latest/search/all_6.js | 4 + api/latest/search/all_7.js | 47 + api/latest/search/all_8.js | 5 + api/latest/search/all_9.js | 7 + api/latest/search/all_a.js | 7 + api/latest/search/close.svg | 18 + api/latest/search/enums_0.js | 4 + api/latest/search/enumvalues_0.js | 6 + api/latest/search/files_0.js | 7 + api/latest/search/functions_0.js | 36 + api/latest/search/mag.svg | 24 + api/latest/search/mag_d.svg | 24 + api/latest/search/mag_sel.svg | 31 + api/latest/search/mag_seld.svg | 31 + api/latest/search/pages_0.js | 4 + api/latest/search/pages_1.js | 4 + api/latest/search/pages_2.js | 4 + api/latest/search/pages_3.js | 4 + api/latest/search/search.css | 291 +++ api/latest/search/search.js | 840 +++++++ api/latest/search/searchdata.js | 33 + api/latest/search/typedefs_0.js | 5 + api/latest/splitbar.png | Bin 0 -> 314 bytes api/latest/splitbard.png | Bin 0 -> 282 bytes api/latest/sync_off.png | Bin 0 -> 853 bytes api/latest/sync_on.png | Bin 0 -> 845 bytes api/latest/tab_a.png | Bin 0 -> 142 bytes api/latest/tab_ad.png | Bin 0 -> 135 bytes api/latest/tab_b.png | Bin 0 -> 169 bytes api/latest/tab_bd.png | Bin 0 -> 173 bytes api/latest/tab_h.png | Bin 0 -> 177 bytes api/latest/tab_hd.png | Bin 0 -> 180 bytes api/latest/tab_s.png | Bin 0 -> 184 bytes api/latest/tab_sd.png | Bin 0 -> 188 bytes api/latest/tabs.css | 1 + doc/v1.0.0/bc_s.png | Bin 0 -> 676 bytes doc/v1.0.0/bc_sd.png | Bin 0 -> 635 bytes doc/v1.0.0/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.0.0/doc.svg | 12 + doc/v1.0.0/docd.svg | 12 + doc/v1.0.0/doxygen.css | 2045 +++++++++++++++++ doc/v1.0.0/doxygen.svg | 28 + doc/v1.0.0/dynsections.js | 192 ++ doc/v1.0.0/files.html | 91 + doc/v1.0.0/folderclosed.svg | 11 + doc/v1.0.0/folderclosedd.svg | 11 + doc/v1.0.0/folderopen.svg | 17 + doc/v1.0.0/folderopend.svg | 12 + doc/v1.0.0/globals.html | 120 + doc/v1.0.0/globals_enum.html | 81 + doc/v1.0.0/globals_eval.html | 83 + doc/v1.0.0/globals_func.html | 114 + doc/v1.0.0/globals_type.html | 82 + doc/v1.0.0/index.html | 94 + doc/v1.0.0/jquery.js | 34 + doc/v1.0.0/menu.js | 136 ++ doc/v1.0.0/menudata.js | 36 + doc/v1.0.0/minus.svg | 8 + doc/v1.0.0/minusd.svg | 8 + doc/v1.0.0/nav_f.png | Bin 0 -> 153 bytes doc/v1.0.0/nav_fd.png | Bin 0 -> 169 bytes doc/v1.0.0/nav_g.png | Bin 0 -> 95 bytes doc/v1.0.0/nav_h.png | Bin 0 -> 98 bytes doc/v1.0.0/nav_hd.png | Bin 0 -> 114 bytes doc/v1.0.0/open.png | Bin 0 -> 123 bytes doc/v1.0.0/paf_8h.html | 544 +++++ doc/v1.0.0/paf_8h_source.html | 152 ++ doc/v1.0.0/paf__err_8h_source.html | 118 + doc/v1.0.0/paf__match_8h.html | 162 ++ doc/v1.0.0/paf__match_8h_source.html | 129 ++ doc/v1.0.0/paf__props_8h.html | 580 +++++ doc/v1.0.0/paf__props_8h_source.html | 160 ++ doc/v1.0.0/paf__value_8h.html | 355 +++ doc/v1.0.0/paf__value_8h_source.html | 139 ++ doc/v1.0.0/plus.svg | 9 + doc/v1.0.0/plusd.svg | 9 + doc/v1.0.0/search/all_0.js | 4 + doc/v1.0.0/search/all_1.js | 4 + doc/v1.0.0/search/all_2.js | 4 + doc/v1.0.0/search/all_3.js | 46 + doc/v1.0.0/search/all_4.js | 5 + doc/v1.0.0/search/all_5.js | 5 + doc/v1.0.0/search/all_6.js | 4 + doc/v1.0.0/search/all_7.js | 47 + doc/v1.0.0/search/all_8.js | 5 + doc/v1.0.0/search/all_9.js | 7 + doc/v1.0.0/search/all_a.js | 7 + doc/v1.0.0/search/close.svg | 18 + doc/v1.0.0/search/enums_0.js | 4 + doc/v1.0.0/search/enumvalues_0.js | 6 + doc/v1.0.0/search/files_0.js | 7 + doc/v1.0.0/search/functions_0.js | 35 + doc/v1.0.0/search/mag.svg | 24 + doc/v1.0.0/search/mag_d.svg | 24 + doc/v1.0.0/search/mag_sel.svg | 31 + doc/v1.0.0/search/mag_seld.svg | 31 + doc/v1.0.0/search/pages_0.js | 4 + doc/v1.0.0/search/pages_1.js | 4 + doc/v1.0.0/search/pages_2.js | 4 + doc/v1.0.0/search/pages_3.js | 4 + doc/v1.0.0/search/search.css | 291 +++ doc/v1.0.0/search/search.js | 840 +++++++ doc/v1.0.0/search/searchdata.js | 33 + doc/v1.0.0/search/typedefs_0.js | 5 + doc/v1.0.0/splitbar.png | Bin 0 -> 314 bytes doc/v1.0.0/splitbard.png | Bin 0 -> 282 bytes doc/v1.0.0/sync_off.png | Bin 0 -> 853 bytes doc/v1.0.0/sync_on.png | Bin 0 -> 845 bytes doc/v1.0.0/tab_a.png | Bin 0 -> 142 bytes doc/v1.0.0/tab_ad.png | Bin 0 -> 135 bytes doc/v1.0.0/tab_b.png | Bin 0 -> 169 bytes doc/v1.0.0/tab_bd.png | Bin 0 -> 173 bytes doc/v1.0.0/tab_h.png | Bin 0 -> 177 bytes doc/v1.0.0/tab_hd.png | Bin 0 -> 180 bytes doc/v1.0.0/tab_s.png | Bin 0 -> 184 bytes doc/v1.0.0/tab_sd.png | Bin 0 -> 188 bytes doc/v1.0.0/tabs.css | 1 + doc/v1.0.1/bc_s.png | Bin 0 -> 676 bytes doc/v1.0.1/bc_sd.png | Bin 0 -> 635 bytes doc/v1.0.1/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.0.1/doc.svg | 12 + doc/v1.0.1/docd.svg | 12 + doc/v1.0.1/doxygen.css | 2045 +++++++++++++++++ doc/v1.0.1/doxygen.svg | 28 + doc/v1.0.1/dynsections.js | 192 ++ doc/v1.0.1/files.html | 91 + doc/v1.0.1/folderclosed.svg | 11 + doc/v1.0.1/folderclosedd.svg | 11 + doc/v1.0.1/folderopen.svg | 17 + doc/v1.0.1/folderopend.svg | 12 + doc/v1.0.1/globals.html | 120 + doc/v1.0.1/globals_enum.html | 81 + doc/v1.0.1/globals_eval.html | 83 + doc/v1.0.1/globals_func.html | 114 + doc/v1.0.1/globals_type.html | 82 + doc/v1.0.1/index.html | 176 ++ doc/v1.0.1/jquery.js | 34 + doc/v1.0.1/menu.js | 136 ++ doc/v1.0.1/menudata.js | 36 + doc/v1.0.1/minus.svg | 8 + doc/v1.0.1/minusd.svg | 8 + doc/v1.0.1/nav_f.png | Bin 0 -> 153 bytes doc/v1.0.1/nav_fd.png | Bin 0 -> 169 bytes doc/v1.0.1/nav_g.png | Bin 0 -> 95 bytes doc/v1.0.1/nav_h.png | Bin 0 -> 98 bytes doc/v1.0.1/nav_hd.png | Bin 0 -> 114 bytes doc/v1.0.1/open.png | Bin 0 -> 123 bytes doc/v1.0.1/paf_8h.html | 544 +++++ doc/v1.0.1/paf_8h_source.html | 152 ++ doc/v1.0.1/paf__err_8h_source.html | 118 + doc/v1.0.1/paf__match_8h.html | 162 ++ doc/v1.0.1/paf__match_8h_source.html | 129 ++ doc/v1.0.1/paf__props_8h.html | 580 +++++ doc/v1.0.1/paf__props_8h_source.html | 160 ++ doc/v1.0.1/paf__value_8h.html | 355 +++ doc/v1.0.1/paf__value_8h_source.html | 139 ++ doc/v1.0.1/plus.svg | 9 + doc/v1.0.1/plusd.svg | 9 + doc/v1.0.1/search/all_0.js | 4 + doc/v1.0.1/search/all_1.js | 6 + doc/v1.0.1/search/all_2.js | 7 + doc/v1.0.1/search/all_3.js | 6 + doc/v1.0.1/search/all_4.js | 4 + doc/v1.0.1/search/all_5.js | 4 + doc/v1.0.1/search/all_6.js | 4 + doc/v1.0.1/search/all_7.js | 46 + doc/v1.0.1/search/all_8.js | 5 + doc/v1.0.1/search/all_9.js | 6 + doc/v1.0.1/search/all_a.js | 6 + doc/v1.0.1/search/close.svg | 18 + doc/v1.0.1/search/enums_0.js | 4 + doc/v1.0.1/search/enumvalues_0.js | 6 + doc/v1.0.1/search/files_0.js | 7 + doc/v1.0.1/search/functions_0.js | 35 + doc/v1.0.1/search/mag.svg | 24 + doc/v1.0.1/search/mag_d.svg | 24 + doc/v1.0.1/search/mag_sel.svg | 31 + doc/v1.0.1/search/mag_seld.svg | 31 + doc/v1.0.1/search/pages_0.js | 4 + doc/v1.0.1/search/pages_1.js | 4 + doc/v1.0.1/search/pages_2.js | 4 + doc/v1.0.1/search/pages_3.js | 4 + doc/v1.0.1/search/search.css | 291 +++ doc/v1.0.1/search/search.js | 840 +++++++ doc/v1.0.1/search/searchdata.js | 33 + doc/v1.0.1/search/typedefs_0.js | 5 + doc/v1.0.1/splitbar.png | Bin 0 -> 314 bytes doc/v1.0.1/splitbard.png | Bin 0 -> 282 bytes doc/v1.0.1/sync_off.png | Bin 0 -> 853 bytes doc/v1.0.1/sync_on.png | Bin 0 -> 845 bytes doc/v1.0.1/tab_a.png | Bin 0 -> 142 bytes doc/v1.0.1/tab_ad.png | Bin 0 -> 135 bytes doc/v1.0.1/tab_b.png | Bin 0 -> 169 bytes doc/v1.0.1/tab_bd.png | Bin 0 -> 173 bytes doc/v1.0.1/tab_h.png | Bin 0 -> 177 bytes doc/v1.0.1/tab_hd.png | Bin 0 -> 180 bytes doc/v1.0.1/tab_s.png | Bin 0 -> 184 bytes doc/v1.0.1/tab_sd.png | Bin 0 -> 188 bytes doc/v1.0.1/tabs.css | 1 + doc/v1.1.0/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.0/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.0/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.0/doc.svg | 12 + doc/v1.1.0/docd.svg | 12 + doc/v1.1.0/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.0/doxygen.svg | 28 + doc/v1.1.0/dynsections.js | 192 ++ doc/v1.1.0/files.html | 91 + doc/v1.1.0/folderclosed.svg | 11 + doc/v1.1.0/folderclosedd.svg | 11 + doc/v1.1.0/folderopen.svg | 17 + doc/v1.1.0/folderopend.svg | 12 + doc/v1.1.0/globals.html | 121 + doc/v1.1.0/globals_enum.html | 81 + doc/v1.1.0/globals_eval.html | 83 + doc/v1.1.0/globals_func.html | 115 + doc/v1.1.0/globals_type.html | 82 + doc/v1.1.0/index.html | 177 ++ doc/v1.1.0/jquery.js | 34 + doc/v1.1.0/menu.js | 136 ++ doc/v1.1.0/menudata.js | 36 + doc/v1.1.0/minus.svg | 8 + doc/v1.1.0/minusd.svg | 8 + doc/v1.1.0/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.0/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.0/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.0/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.0/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.0/open.png | Bin 0 -> 123 bytes doc/v1.1.0/paf_8h.html | 592 +++++ doc/v1.1.0/paf_8h_source.html | 155 ++ doc/v1.1.0/paf__err_8h_source.html | 118 + doc/v1.1.0/paf__match_8h.html | 162 ++ doc/v1.1.0/paf__match_8h_source.html | 129 ++ doc/v1.1.0/paf__props_8h.html | 580 +++++ doc/v1.1.0/paf__props_8h_source.html | 160 ++ doc/v1.1.0/paf__value_8h.html | 355 +++ doc/v1.1.0/paf__value_8h_source.html | 139 ++ doc/v1.1.0/plus.svg | 9 + doc/v1.1.0/plusd.svg | 9 + doc/v1.1.0/search/all_0.js | 4 + doc/v1.1.0/search/all_1.js | 6 + doc/v1.1.0/search/all_2.js | 7 + doc/v1.1.0/search/all_3.js | 6 + doc/v1.1.0/search/all_4.js | 4 + doc/v1.1.0/search/all_5.js | 4 + doc/v1.1.0/search/all_6.js | 4 + doc/v1.1.0/search/all_7.js | 47 + doc/v1.1.0/search/all_8.js | 5 + doc/v1.1.0/search/all_9.js | 6 + doc/v1.1.0/search/all_a.js | 6 + doc/v1.1.0/search/close.svg | 18 + doc/v1.1.0/search/enums_0.js | 4 + doc/v1.1.0/search/enumvalues_0.js | 6 + doc/v1.1.0/search/files_0.js | 7 + doc/v1.1.0/search/functions_0.js | 36 + doc/v1.1.0/search/mag.svg | 24 + doc/v1.1.0/search/mag_d.svg | 24 + doc/v1.1.0/search/mag_sel.svg | 31 + doc/v1.1.0/search/mag_seld.svg | 31 + doc/v1.1.0/search/pages_0.js | 4 + doc/v1.1.0/search/pages_1.js | 4 + doc/v1.1.0/search/pages_2.js | 4 + doc/v1.1.0/search/pages_3.js | 4 + doc/v1.1.0/search/search.css | 291 +++ doc/v1.1.0/search/search.js | 840 +++++++ doc/v1.1.0/search/searchdata.js | 33 + doc/v1.1.0/search/typedefs_0.js | 5 + doc/v1.1.0/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.0/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.0/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.0/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.0/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.0/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.0/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.0/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.0/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.0/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.0/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.0/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.0/tabs.css | 1 + doc/v1.1.1/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.1/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.1/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.1/doc.svg | 12 + doc/v1.1.1/docd.svg | 12 + doc/v1.1.1/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.1/doxygen.svg | 28 + doc/v1.1.1/dynsections.js | 192 ++ doc/v1.1.1/files.html | 91 + doc/v1.1.1/folderclosed.svg | 11 + doc/v1.1.1/folderclosedd.svg | 11 + doc/v1.1.1/folderopen.svg | 17 + doc/v1.1.1/folderopend.svg | 12 + doc/v1.1.1/globals.html | 121 + doc/v1.1.1/globals_enum.html | 81 + doc/v1.1.1/globals_eval.html | 83 + doc/v1.1.1/globals_func.html | 115 + doc/v1.1.1/globals_type.html | 82 + doc/v1.1.1/index.html | 183 ++ doc/v1.1.1/jquery.js | 34 + doc/v1.1.1/menu.js | 136 ++ doc/v1.1.1/menudata.js | 36 + doc/v1.1.1/minus.svg | 8 + doc/v1.1.1/minusd.svg | 8 + doc/v1.1.1/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.1/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.1/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.1/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.1/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.1/open.png | Bin 0 -> 123 bytes doc/v1.1.1/paf_8h.html | 592 +++++ doc/v1.1.1/paf_8h_source.html | 155 ++ doc/v1.1.1/paf__err_8h_source.html | 118 + doc/v1.1.1/paf__match_8h.html | 162 ++ doc/v1.1.1/paf__match_8h_source.html | 129 ++ doc/v1.1.1/paf__props_8h.html | 580 +++++ doc/v1.1.1/paf__props_8h_source.html | 160 ++ doc/v1.1.1/paf__value_8h.html | 355 +++ doc/v1.1.1/paf__value_8h_source.html | 139 ++ doc/v1.1.1/plus.svg | 9 + doc/v1.1.1/plusd.svg | 9 + doc/v1.1.1/search/all_0.js | 4 + doc/v1.1.1/search/all_1.js | 6 + doc/v1.1.1/search/all_2.js | 7 + doc/v1.1.1/search/all_3.js | 6 + doc/v1.1.1/search/all_4.js | 4 + doc/v1.1.1/search/all_5.js | 4 + doc/v1.1.1/search/all_6.js | 4 + doc/v1.1.1/search/all_7.js | 47 + doc/v1.1.1/search/all_8.js | 5 + doc/v1.1.1/search/all_9.js | 6 + doc/v1.1.1/search/all_a.js | 6 + doc/v1.1.1/search/close.svg | 18 + doc/v1.1.1/search/enums_0.js | 4 + doc/v1.1.1/search/enumvalues_0.js | 6 + doc/v1.1.1/search/files_0.js | 7 + doc/v1.1.1/search/functions_0.js | 36 + doc/v1.1.1/search/mag.svg | 24 + doc/v1.1.1/search/mag_d.svg | 24 + doc/v1.1.1/search/mag_sel.svg | 31 + doc/v1.1.1/search/mag_seld.svg | 31 + doc/v1.1.1/search/pages_0.js | 4 + doc/v1.1.1/search/pages_1.js | 4 + doc/v1.1.1/search/pages_2.js | 4 + doc/v1.1.1/search/pages_3.js | 4 + doc/v1.1.1/search/search.css | 291 +++ doc/v1.1.1/search/search.js | 840 +++++++ doc/v1.1.1/search/searchdata.js | 33 + doc/v1.1.1/search/typedefs_0.js | 5 + doc/v1.1.1/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.1/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.1/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.1/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.1/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.1/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.1/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.1/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.1/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.1/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.1/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.1/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.1/tabs.css | 1 + doc/v1.1.10/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.10/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.10/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.10/doc.svg | 12 + doc/v1.1.10/docd.svg | 12 + doc/v1.1.10/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.10/doxygen.svg | 28 + doc/v1.1.10/dynsections.js | 192 ++ doc/v1.1.10/files.html | 91 + doc/v1.1.10/folderclosed.svg | 11 + doc/v1.1.10/folderclosedd.svg | 11 + doc/v1.1.10/folderopen.svg | 17 + doc/v1.1.10/folderopend.svg | 12 + doc/v1.1.10/globals.html | 121 + doc/v1.1.10/globals_enum.html | 81 + doc/v1.1.10/globals_eval.html | 83 + doc/v1.1.10/globals_func.html | 115 + doc/v1.1.10/globals_type.html | 82 + doc/v1.1.10/index.html | 213 ++ doc/v1.1.10/jquery.js | 34 + doc/v1.1.10/menu.js | 136 ++ doc/v1.1.10/menudata.js | 36 + doc/v1.1.10/minus.svg | 8 + doc/v1.1.10/minusd.svg | 8 + doc/v1.1.10/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.10/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.10/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.10/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.10/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.10/open.png | Bin 0 -> 123 bytes doc/v1.1.10/paf_8h.html | 593 +++++ doc/v1.1.10/paf_8h_source.html | 155 ++ doc/v1.1.10/paf__err_8h_source.html | 118 + doc/v1.1.10/paf__match_8h.html | 162 ++ doc/v1.1.10/paf__match_8h_source.html | 129 ++ doc/v1.1.10/paf__props_8h.html | 580 +++++ doc/v1.1.10/paf__props_8h_source.html | 160 ++ doc/v1.1.10/paf__value_8h.html | 355 +++ doc/v1.1.10/paf__value_8h_source.html | 139 ++ doc/v1.1.10/plus.svg | 9 + doc/v1.1.10/plusd.svg | 9 + doc/v1.1.10/search/all_0.js | 5 + doc/v1.1.10/search/all_1.js | 6 + doc/v1.1.10/search/all_2.js | 8 + doc/v1.1.10/search/all_3.js | 6 + doc/v1.1.10/search/all_4.js | 5 + doc/v1.1.10/search/all_5.js | 5 + doc/v1.1.10/search/all_6.js | 4 + doc/v1.1.10/search/all_7.js | 47 + doc/v1.1.10/search/all_8.js | 5 + doc/v1.1.10/search/all_9.js | 7 + doc/v1.1.10/search/all_a.js | 7 + doc/v1.1.10/search/close.svg | 18 + doc/v1.1.10/search/enums_0.js | 4 + doc/v1.1.10/search/enumvalues_0.js | 6 + doc/v1.1.10/search/files_0.js | 7 + doc/v1.1.10/search/functions_0.js | 36 + doc/v1.1.10/search/mag.svg | 24 + doc/v1.1.10/search/mag_d.svg | 24 + doc/v1.1.10/search/mag_sel.svg | 31 + doc/v1.1.10/search/mag_seld.svg | 31 + doc/v1.1.10/search/pages_0.js | 4 + doc/v1.1.10/search/pages_1.js | 4 + doc/v1.1.10/search/pages_2.js | 4 + doc/v1.1.10/search/pages_3.js | 4 + doc/v1.1.10/search/search.css | 291 +++ doc/v1.1.10/search/search.js | 840 +++++++ doc/v1.1.10/search/searchdata.js | 33 + doc/v1.1.10/search/typedefs_0.js | 5 + doc/v1.1.10/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.10/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.10/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.10/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.10/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.10/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.10/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.10/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.10/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.10/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.10/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.10/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.10/tabs.css | 1 + doc/v1.1.11/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.11/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.11/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.11/doc.svg | 12 + doc/v1.1.11/docd.svg | 12 + doc/v1.1.11/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.11/doxygen.svg | 28 + doc/v1.1.11/dynsections.js | 192 ++ doc/v1.1.11/files.html | 91 + doc/v1.1.11/folderclosed.svg | 11 + doc/v1.1.11/folderclosedd.svg | 11 + doc/v1.1.11/folderopen.svg | 17 + doc/v1.1.11/folderopend.svg | 12 + doc/v1.1.11/globals.html | 121 + doc/v1.1.11/globals_enum.html | 81 + doc/v1.1.11/globals_eval.html | 83 + doc/v1.1.11/globals_func.html | 115 + doc/v1.1.11/globals_type.html | 82 + doc/v1.1.11/index.html | 213 ++ doc/v1.1.11/jquery.js | 34 + doc/v1.1.11/menu.js | 136 ++ doc/v1.1.11/menudata.js | 36 + doc/v1.1.11/minus.svg | 8 + doc/v1.1.11/minusd.svg | 8 + doc/v1.1.11/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.11/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.11/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.11/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.11/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.11/open.png | Bin 0 -> 123 bytes doc/v1.1.11/paf_8h.html | 593 +++++ doc/v1.1.11/paf_8h_source.html | 155 ++ doc/v1.1.11/paf__err_8h_source.html | 118 + doc/v1.1.11/paf__match_8h.html | 162 ++ doc/v1.1.11/paf__match_8h_source.html | 129 ++ doc/v1.1.11/paf__props_8h.html | 580 +++++ doc/v1.1.11/paf__props_8h_source.html | 160 ++ doc/v1.1.11/paf__value_8h.html | 355 +++ doc/v1.1.11/paf__value_8h_source.html | 139 ++ doc/v1.1.11/plus.svg | 9 + doc/v1.1.11/plusd.svg | 9 + doc/v1.1.11/search/all_0.js | 5 + doc/v1.1.11/search/all_1.js | 6 + doc/v1.1.11/search/all_2.js | 8 + doc/v1.1.11/search/all_3.js | 6 + doc/v1.1.11/search/all_4.js | 5 + doc/v1.1.11/search/all_5.js | 5 + doc/v1.1.11/search/all_6.js | 4 + doc/v1.1.11/search/all_7.js | 47 + doc/v1.1.11/search/all_8.js | 5 + doc/v1.1.11/search/all_9.js | 7 + doc/v1.1.11/search/all_a.js | 7 + doc/v1.1.11/search/close.svg | 18 + doc/v1.1.11/search/enums_0.js | 4 + doc/v1.1.11/search/enumvalues_0.js | 6 + doc/v1.1.11/search/files_0.js | 7 + doc/v1.1.11/search/functions_0.js | 36 + doc/v1.1.11/search/mag.svg | 24 + doc/v1.1.11/search/mag_d.svg | 24 + doc/v1.1.11/search/mag_sel.svg | 31 + doc/v1.1.11/search/mag_seld.svg | 31 + doc/v1.1.11/search/pages_0.js | 4 + doc/v1.1.11/search/pages_1.js | 4 + doc/v1.1.11/search/pages_2.js | 4 + doc/v1.1.11/search/pages_3.js | 4 + doc/v1.1.11/search/search.css | 291 +++ doc/v1.1.11/search/search.js | 840 +++++++ doc/v1.1.11/search/searchdata.js | 33 + doc/v1.1.11/search/typedefs_0.js | 5 + doc/v1.1.11/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.11/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.11/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.11/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.11/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.11/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.11/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.11/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.11/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.11/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.11/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.11/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.11/tabs.css | 1 + doc/v1.1.12/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.12/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.12/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.12/doc.svg | 12 + doc/v1.1.12/docd.svg | 12 + doc/v1.1.12/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.12/doxygen.svg | 28 + doc/v1.1.12/dynsections.js | 192 ++ doc/v1.1.12/files.html | 91 + doc/v1.1.12/folderclosed.svg | 11 + doc/v1.1.12/folderclosedd.svg | 11 + doc/v1.1.12/folderopen.svg | 17 + doc/v1.1.12/folderopend.svg | 12 + doc/v1.1.12/globals.html | 121 + doc/v1.1.12/globals_enum.html | 81 + doc/v1.1.12/globals_eval.html | 83 + doc/v1.1.12/globals_func.html | 115 + doc/v1.1.12/globals_type.html | 82 + doc/v1.1.12/index.html | 213 ++ doc/v1.1.12/jquery.js | 34 + doc/v1.1.12/menu.js | 136 ++ doc/v1.1.12/menudata.js | 36 + doc/v1.1.12/minus.svg | 8 + doc/v1.1.12/minusd.svg | 8 + doc/v1.1.12/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.12/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.12/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.12/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.12/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.12/open.png | Bin 0 -> 123 bytes doc/v1.1.12/paf_8h.html | 593 +++++ doc/v1.1.12/paf_8h_source.html | 155 ++ doc/v1.1.12/paf__err_8h_source.html | 118 + doc/v1.1.12/paf__match_8h.html | 162 ++ doc/v1.1.12/paf__match_8h_source.html | 129 ++ doc/v1.1.12/paf__props_8h.html | 580 +++++ doc/v1.1.12/paf__props_8h_source.html | 160 ++ doc/v1.1.12/paf__value_8h.html | 355 +++ doc/v1.1.12/paf__value_8h_source.html | 139 ++ doc/v1.1.12/plus.svg | 9 + doc/v1.1.12/plusd.svg | 9 + doc/v1.1.12/search/all_0.js | 5 + doc/v1.1.12/search/all_1.js | 6 + doc/v1.1.12/search/all_2.js | 8 + doc/v1.1.12/search/all_3.js | 6 + doc/v1.1.12/search/all_4.js | 5 + doc/v1.1.12/search/all_5.js | 5 + doc/v1.1.12/search/all_6.js | 4 + doc/v1.1.12/search/all_7.js | 47 + doc/v1.1.12/search/all_8.js | 5 + doc/v1.1.12/search/all_9.js | 7 + doc/v1.1.12/search/all_a.js | 7 + doc/v1.1.12/search/close.svg | 18 + doc/v1.1.12/search/enums_0.js | 4 + doc/v1.1.12/search/enumvalues_0.js | 6 + doc/v1.1.12/search/files_0.js | 7 + doc/v1.1.12/search/functions_0.js | 36 + doc/v1.1.12/search/mag.svg | 24 + doc/v1.1.12/search/mag_d.svg | 24 + doc/v1.1.12/search/mag_sel.svg | 31 + doc/v1.1.12/search/mag_seld.svg | 31 + doc/v1.1.12/search/pages_0.js | 4 + doc/v1.1.12/search/pages_1.js | 4 + doc/v1.1.12/search/pages_2.js | 4 + doc/v1.1.12/search/pages_3.js | 4 + doc/v1.1.12/search/search.css | 291 +++ doc/v1.1.12/search/search.js | 840 +++++++ doc/v1.1.12/search/searchdata.js | 33 + doc/v1.1.12/search/typedefs_0.js | 5 + doc/v1.1.12/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.12/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.12/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.12/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.12/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.12/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.12/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.12/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.12/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.12/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.12/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.12/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.12/tabs.css | 1 + doc/v1.1.2/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.2/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.2/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.2/doc.svg | 12 + doc/v1.1.2/docd.svg | 12 + doc/v1.1.2/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.2/doxygen.svg | 28 + doc/v1.1.2/dynsections.js | 192 ++ doc/v1.1.2/files.html | 91 + doc/v1.1.2/folderclosed.svg | 11 + doc/v1.1.2/folderclosedd.svg | 11 + doc/v1.1.2/folderopen.svg | 17 + doc/v1.1.2/folderopend.svg | 12 + doc/v1.1.2/globals.html | 121 + doc/v1.1.2/globals_enum.html | 81 + doc/v1.1.2/globals_eval.html | 83 + doc/v1.1.2/globals_func.html | 115 + doc/v1.1.2/globals_type.html | 82 + doc/v1.1.2/index.html | 183 ++ doc/v1.1.2/jquery.js | 34 + doc/v1.1.2/menu.js | 136 ++ doc/v1.1.2/menudata.js | 36 + doc/v1.1.2/minus.svg | 8 + doc/v1.1.2/minusd.svg | 8 + doc/v1.1.2/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.2/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.2/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.2/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.2/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.2/open.png | Bin 0 -> 123 bytes doc/v1.1.2/paf_8h.html | 592 +++++ doc/v1.1.2/paf_8h_source.html | 155 ++ doc/v1.1.2/paf__err_8h_source.html | 118 + doc/v1.1.2/paf__match_8h.html | 162 ++ doc/v1.1.2/paf__match_8h_source.html | 129 ++ doc/v1.1.2/paf__props_8h.html | 580 +++++ doc/v1.1.2/paf__props_8h_source.html | 160 ++ doc/v1.1.2/paf__value_8h.html | 355 +++ doc/v1.1.2/paf__value_8h_source.html | 139 ++ doc/v1.1.2/plus.svg | 9 + doc/v1.1.2/plusd.svg | 9 + doc/v1.1.2/search/all_0.js | 4 + doc/v1.1.2/search/all_1.js | 6 + doc/v1.1.2/search/all_2.js | 7 + doc/v1.1.2/search/all_3.js | 6 + doc/v1.1.2/search/all_4.js | 4 + doc/v1.1.2/search/all_5.js | 4 + doc/v1.1.2/search/all_6.js | 4 + doc/v1.1.2/search/all_7.js | 47 + doc/v1.1.2/search/all_8.js | 5 + doc/v1.1.2/search/all_9.js | 6 + doc/v1.1.2/search/all_a.js | 6 + doc/v1.1.2/search/close.svg | 18 + doc/v1.1.2/search/enums_0.js | 4 + doc/v1.1.2/search/enumvalues_0.js | 6 + doc/v1.1.2/search/files_0.js | 7 + doc/v1.1.2/search/functions_0.js | 36 + doc/v1.1.2/search/mag.svg | 24 + doc/v1.1.2/search/mag_d.svg | 24 + doc/v1.1.2/search/mag_sel.svg | 31 + doc/v1.1.2/search/mag_seld.svg | 31 + doc/v1.1.2/search/pages_0.js | 4 + doc/v1.1.2/search/pages_1.js | 4 + doc/v1.1.2/search/pages_2.js | 4 + doc/v1.1.2/search/pages_3.js | 4 + doc/v1.1.2/search/search.css | 291 +++ doc/v1.1.2/search/search.js | 840 +++++++ doc/v1.1.2/search/searchdata.js | 33 + doc/v1.1.2/search/typedefs_0.js | 5 + doc/v1.1.2/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.2/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.2/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.2/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.2/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.2/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.2/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.2/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.2/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.2/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.2/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.2/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.2/tabs.css | 1 + doc/v1.1.3/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.3/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.3/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.3/doc.svg | 12 + doc/v1.1.3/docd.svg | 12 + doc/v1.1.3/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.3/doxygen.svg | 28 + doc/v1.1.3/dynsections.js | 192 ++ doc/v1.1.3/files.html | 91 + doc/v1.1.3/folderclosed.svg | 11 + doc/v1.1.3/folderclosedd.svg | 11 + doc/v1.1.3/folderopen.svg | 17 + doc/v1.1.3/folderopend.svg | 12 + doc/v1.1.3/globals.html | 121 + doc/v1.1.3/globals_enum.html | 81 + doc/v1.1.3/globals_eval.html | 83 + doc/v1.1.3/globals_func.html | 115 + doc/v1.1.3/globals_type.html | 82 + doc/v1.1.3/index.html | 193 ++ doc/v1.1.3/jquery.js | 34 + doc/v1.1.3/menu.js | 136 ++ doc/v1.1.3/menudata.js | 36 + doc/v1.1.3/minus.svg | 8 + doc/v1.1.3/minusd.svg | 8 + doc/v1.1.3/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.3/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.3/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.3/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.3/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.3/open.png | Bin 0 -> 123 bytes doc/v1.1.3/paf_8h.html | 593 +++++ doc/v1.1.3/paf_8h_source.html | 155 ++ doc/v1.1.3/paf__err_8h_source.html | 118 + doc/v1.1.3/paf__match_8h.html | 162 ++ doc/v1.1.3/paf__match_8h_source.html | 129 ++ doc/v1.1.3/paf__props_8h.html | 580 +++++ doc/v1.1.3/paf__props_8h_source.html | 160 ++ doc/v1.1.3/paf__value_8h.html | 355 +++ doc/v1.1.3/paf__value_8h_source.html | 139 ++ doc/v1.1.3/plus.svg | 9 + doc/v1.1.3/plusd.svg | 9 + doc/v1.1.3/search/all_0.js | 5 + doc/v1.1.3/search/all_1.js | 6 + doc/v1.1.3/search/all_2.js | 8 + doc/v1.1.3/search/all_3.js | 6 + doc/v1.1.3/search/all_4.js | 4 + doc/v1.1.3/search/all_5.js | 5 + doc/v1.1.3/search/all_6.js | 4 + doc/v1.1.3/search/all_7.js | 47 + doc/v1.1.3/search/all_8.js | 5 + doc/v1.1.3/search/all_9.js | 7 + doc/v1.1.3/search/all_a.js | 6 + doc/v1.1.3/search/close.svg | 18 + doc/v1.1.3/search/enums_0.js | 4 + doc/v1.1.3/search/enumvalues_0.js | 6 + doc/v1.1.3/search/files_0.js | 7 + doc/v1.1.3/search/functions_0.js | 36 + doc/v1.1.3/search/mag.svg | 24 + doc/v1.1.3/search/mag_d.svg | 24 + doc/v1.1.3/search/mag_sel.svg | 31 + doc/v1.1.3/search/mag_seld.svg | 31 + doc/v1.1.3/search/pages_0.js | 4 + doc/v1.1.3/search/pages_1.js | 4 + doc/v1.1.3/search/pages_2.js | 4 + doc/v1.1.3/search/pages_3.js | 4 + doc/v1.1.3/search/search.css | 291 +++ doc/v1.1.3/search/search.js | 840 +++++++ doc/v1.1.3/search/searchdata.js | 33 + doc/v1.1.3/search/typedefs_0.js | 5 + doc/v1.1.3/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.3/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.3/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.3/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.3/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.3/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.3/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.3/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.3/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.3/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.3/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.3/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.3/tabs.css | 1 + doc/v1.1.4/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.4/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.4/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.4/doc.svg | 12 + doc/v1.1.4/docd.svg | 12 + doc/v1.1.4/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.4/doxygen.svg | 28 + doc/v1.1.4/dynsections.js | 192 ++ doc/v1.1.4/files.html | 91 + doc/v1.1.4/folderclosed.svg | 11 + doc/v1.1.4/folderclosedd.svg | 11 + doc/v1.1.4/folderopen.svg | 17 + doc/v1.1.4/folderopend.svg | 12 + doc/v1.1.4/globals.html | 121 + doc/v1.1.4/globals_enum.html | 81 + doc/v1.1.4/globals_eval.html | 83 + doc/v1.1.4/globals_func.html | 115 + doc/v1.1.4/globals_type.html | 82 + doc/v1.1.4/index.html | 193 ++ doc/v1.1.4/jquery.js | 34 + doc/v1.1.4/menu.js | 136 ++ doc/v1.1.4/menudata.js | 36 + doc/v1.1.4/minus.svg | 8 + doc/v1.1.4/minusd.svg | 8 + doc/v1.1.4/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.4/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.4/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.4/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.4/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.4/open.png | Bin 0 -> 123 bytes doc/v1.1.4/paf_8h.html | 593 +++++ doc/v1.1.4/paf_8h_source.html | 155 ++ doc/v1.1.4/paf__err_8h_source.html | 118 + doc/v1.1.4/paf__match_8h.html | 162 ++ doc/v1.1.4/paf__match_8h_source.html | 129 ++ doc/v1.1.4/paf__props_8h.html | 580 +++++ doc/v1.1.4/paf__props_8h_source.html | 160 ++ doc/v1.1.4/paf__value_8h.html | 355 +++ doc/v1.1.4/paf__value_8h_source.html | 139 ++ doc/v1.1.4/plus.svg | 9 + doc/v1.1.4/plusd.svg | 9 + doc/v1.1.4/search/all_0.js | 5 + doc/v1.1.4/search/all_1.js | 6 + doc/v1.1.4/search/all_2.js | 8 + doc/v1.1.4/search/all_3.js | 6 + doc/v1.1.4/search/all_4.js | 4 + doc/v1.1.4/search/all_5.js | 5 + doc/v1.1.4/search/all_6.js | 4 + doc/v1.1.4/search/all_7.js | 47 + doc/v1.1.4/search/all_8.js | 5 + doc/v1.1.4/search/all_9.js | 7 + doc/v1.1.4/search/all_a.js | 6 + doc/v1.1.4/search/close.svg | 18 + doc/v1.1.4/search/enums_0.js | 4 + doc/v1.1.4/search/enumvalues_0.js | 6 + doc/v1.1.4/search/files_0.js | 7 + doc/v1.1.4/search/functions_0.js | 36 + doc/v1.1.4/search/mag.svg | 24 + doc/v1.1.4/search/mag_d.svg | 24 + doc/v1.1.4/search/mag_sel.svg | 31 + doc/v1.1.4/search/mag_seld.svg | 31 + doc/v1.1.4/search/pages_0.js | 4 + doc/v1.1.4/search/pages_1.js | 4 + doc/v1.1.4/search/pages_2.js | 4 + doc/v1.1.4/search/pages_3.js | 4 + doc/v1.1.4/search/search.css | 291 +++ doc/v1.1.4/search/search.js | 840 +++++++ doc/v1.1.4/search/searchdata.js | 33 + doc/v1.1.4/search/typedefs_0.js | 5 + doc/v1.1.4/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.4/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.4/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.4/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.4/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.4/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.4/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.4/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.4/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.4/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.4/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.4/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.4/tabs.css | 1 + doc/v1.1.5/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.5/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.5/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.5/doc.svg | 12 + doc/v1.1.5/docd.svg | 12 + doc/v1.1.5/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.5/doxygen.svg | 28 + doc/v1.1.5/dynsections.js | 192 ++ doc/v1.1.5/files.html | 91 + doc/v1.1.5/folderclosed.svg | 11 + doc/v1.1.5/folderclosedd.svg | 11 + doc/v1.1.5/folderopen.svg | 17 + doc/v1.1.5/folderopend.svg | 12 + doc/v1.1.5/globals.html | 121 + doc/v1.1.5/globals_enum.html | 81 + doc/v1.1.5/globals_eval.html | 83 + doc/v1.1.5/globals_func.html | 115 + doc/v1.1.5/globals_type.html | 82 + doc/v1.1.5/index.html | 193 ++ doc/v1.1.5/jquery.js | 34 + doc/v1.1.5/menu.js | 136 ++ doc/v1.1.5/menudata.js | 36 + doc/v1.1.5/minus.svg | 8 + doc/v1.1.5/minusd.svg | 8 + doc/v1.1.5/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.5/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.5/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.5/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.5/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.5/open.png | Bin 0 -> 123 bytes doc/v1.1.5/paf_8h.html | 593 +++++ doc/v1.1.5/paf_8h_source.html | 155 ++ doc/v1.1.5/paf__err_8h_source.html | 118 + doc/v1.1.5/paf__match_8h.html | 162 ++ doc/v1.1.5/paf__match_8h_source.html | 129 ++ doc/v1.1.5/paf__props_8h.html | 580 +++++ doc/v1.1.5/paf__props_8h_source.html | 160 ++ doc/v1.1.5/paf__value_8h.html | 355 +++ doc/v1.1.5/paf__value_8h_source.html | 139 ++ doc/v1.1.5/plus.svg | 9 + doc/v1.1.5/plusd.svg | 9 + doc/v1.1.5/search/all_0.js | 5 + doc/v1.1.5/search/all_1.js | 6 + doc/v1.1.5/search/all_2.js | 8 + doc/v1.1.5/search/all_3.js | 6 + doc/v1.1.5/search/all_4.js | 4 + doc/v1.1.5/search/all_5.js | 5 + doc/v1.1.5/search/all_6.js | 4 + doc/v1.1.5/search/all_7.js | 47 + doc/v1.1.5/search/all_8.js | 5 + doc/v1.1.5/search/all_9.js | 7 + doc/v1.1.5/search/all_a.js | 6 + doc/v1.1.5/search/close.svg | 18 + doc/v1.1.5/search/enums_0.js | 4 + doc/v1.1.5/search/enumvalues_0.js | 6 + doc/v1.1.5/search/files_0.js | 7 + doc/v1.1.5/search/functions_0.js | 36 + doc/v1.1.5/search/mag.svg | 24 + doc/v1.1.5/search/mag_d.svg | 24 + doc/v1.1.5/search/mag_sel.svg | 31 + doc/v1.1.5/search/mag_seld.svg | 31 + doc/v1.1.5/search/pages_0.js | 4 + doc/v1.1.5/search/pages_1.js | 4 + doc/v1.1.5/search/pages_2.js | 4 + doc/v1.1.5/search/pages_3.js | 4 + doc/v1.1.5/search/search.css | 291 +++ doc/v1.1.5/search/search.js | 840 +++++++ doc/v1.1.5/search/searchdata.js | 33 + doc/v1.1.5/search/typedefs_0.js | 5 + doc/v1.1.5/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.5/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.5/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.5/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.5/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.5/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.5/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.5/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.5/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.5/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.5/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.5/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.5/tabs.css | 1 + doc/v1.1.6/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.6/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.6/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.6/doc.svg | 12 + doc/v1.1.6/docd.svg | 12 + doc/v1.1.6/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.6/doxygen.svg | 28 + doc/v1.1.6/dynsections.js | 192 ++ doc/v1.1.6/files.html | 91 + doc/v1.1.6/folderclosed.svg | 11 + doc/v1.1.6/folderclosedd.svg | 11 + doc/v1.1.6/folderopen.svg | 17 + doc/v1.1.6/folderopend.svg | 12 + doc/v1.1.6/globals.html | 121 + doc/v1.1.6/globals_enum.html | 81 + doc/v1.1.6/globals_eval.html | 83 + doc/v1.1.6/globals_func.html | 115 + doc/v1.1.6/globals_type.html | 82 + doc/v1.1.6/index.html | 194 ++ doc/v1.1.6/jquery.js | 34 + doc/v1.1.6/menu.js | 136 ++ doc/v1.1.6/menudata.js | 36 + doc/v1.1.6/minus.svg | 8 + doc/v1.1.6/minusd.svg | 8 + doc/v1.1.6/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.6/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.6/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.6/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.6/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.6/open.png | Bin 0 -> 123 bytes doc/v1.1.6/paf_8h.html | 593 +++++ doc/v1.1.6/paf_8h_source.html | 155 ++ doc/v1.1.6/paf__err_8h_source.html | 118 + doc/v1.1.6/paf__match_8h.html | 162 ++ doc/v1.1.6/paf__match_8h_source.html | 129 ++ doc/v1.1.6/paf__props_8h.html | 580 +++++ doc/v1.1.6/paf__props_8h_source.html | 160 ++ doc/v1.1.6/paf__value_8h.html | 355 +++ doc/v1.1.6/paf__value_8h_source.html | 139 ++ doc/v1.1.6/plus.svg | 9 + doc/v1.1.6/plusd.svg | 9 + doc/v1.1.6/search/all_0.js | 5 + doc/v1.1.6/search/all_1.js | 6 + doc/v1.1.6/search/all_2.js | 8 + doc/v1.1.6/search/all_3.js | 6 + doc/v1.1.6/search/all_4.js | 4 + doc/v1.1.6/search/all_5.js | 5 + doc/v1.1.6/search/all_6.js | 4 + doc/v1.1.6/search/all_7.js | 47 + doc/v1.1.6/search/all_8.js | 5 + doc/v1.1.6/search/all_9.js | 7 + doc/v1.1.6/search/all_a.js | 6 + doc/v1.1.6/search/close.svg | 18 + doc/v1.1.6/search/enums_0.js | 4 + doc/v1.1.6/search/enumvalues_0.js | 6 + doc/v1.1.6/search/files_0.js | 7 + doc/v1.1.6/search/functions_0.js | 36 + doc/v1.1.6/search/mag.svg | 24 + doc/v1.1.6/search/mag_d.svg | 24 + doc/v1.1.6/search/mag_sel.svg | 31 + doc/v1.1.6/search/mag_seld.svg | 31 + doc/v1.1.6/search/pages_0.js | 4 + doc/v1.1.6/search/pages_1.js | 4 + doc/v1.1.6/search/pages_2.js | 4 + doc/v1.1.6/search/pages_3.js | 4 + doc/v1.1.6/search/search.css | 291 +++ doc/v1.1.6/search/search.js | 840 +++++++ doc/v1.1.6/search/searchdata.js | 33 + doc/v1.1.6/search/typedefs_0.js | 5 + doc/v1.1.6/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.6/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.6/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.6/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.6/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.6/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.6/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.6/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.6/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.6/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.6/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.6/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.6/tabs.css | 1 + doc/v1.1.7/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.7/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.7/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.7/doc.svg | 12 + doc/v1.1.7/docd.svg | 12 + doc/v1.1.7/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.7/doxygen.svg | 28 + doc/v1.1.7/dynsections.js | 192 ++ doc/v1.1.7/files.html | 91 + doc/v1.1.7/folderclosed.svg | 11 + doc/v1.1.7/folderclosedd.svg | 11 + doc/v1.1.7/folderopen.svg | 17 + doc/v1.1.7/folderopend.svg | 12 + doc/v1.1.7/globals.html | 121 + doc/v1.1.7/globals_enum.html | 81 + doc/v1.1.7/globals_eval.html | 83 + doc/v1.1.7/globals_func.html | 115 + doc/v1.1.7/globals_type.html | 82 + doc/v1.1.7/index.html | 209 ++ doc/v1.1.7/jquery.js | 34 + doc/v1.1.7/menu.js | 136 ++ doc/v1.1.7/menudata.js | 36 + doc/v1.1.7/minus.svg | 8 + doc/v1.1.7/minusd.svg | 8 + doc/v1.1.7/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.7/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.7/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.7/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.7/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.7/open.png | Bin 0 -> 123 bytes doc/v1.1.7/paf_8h.html | 593 +++++ doc/v1.1.7/paf_8h_source.html | 155 ++ doc/v1.1.7/paf__err_8h_source.html | 118 + doc/v1.1.7/paf__match_8h.html | 162 ++ doc/v1.1.7/paf__match_8h_source.html | 129 ++ doc/v1.1.7/paf__props_8h.html | 580 +++++ doc/v1.1.7/paf__props_8h_source.html | 160 ++ doc/v1.1.7/paf__value_8h.html | 355 +++ doc/v1.1.7/paf__value_8h_source.html | 139 ++ doc/v1.1.7/plus.svg | 9 + doc/v1.1.7/plusd.svg | 9 + doc/v1.1.7/search/all_0.js | 5 + doc/v1.1.7/search/all_1.js | 6 + doc/v1.1.7/search/all_2.js | 8 + doc/v1.1.7/search/all_3.js | 6 + doc/v1.1.7/search/all_4.js | 5 + doc/v1.1.7/search/all_5.js | 5 + doc/v1.1.7/search/all_6.js | 4 + doc/v1.1.7/search/all_7.js | 47 + doc/v1.1.7/search/all_8.js | 5 + doc/v1.1.7/search/all_9.js | 7 + doc/v1.1.7/search/all_a.js | 7 + doc/v1.1.7/search/close.svg | 18 + doc/v1.1.7/search/enums_0.js | 4 + doc/v1.1.7/search/enumvalues_0.js | 6 + doc/v1.1.7/search/files_0.js | 7 + doc/v1.1.7/search/functions_0.js | 36 + doc/v1.1.7/search/mag.svg | 24 + doc/v1.1.7/search/mag_d.svg | 24 + doc/v1.1.7/search/mag_sel.svg | 31 + doc/v1.1.7/search/mag_seld.svg | 31 + doc/v1.1.7/search/pages_0.js | 4 + doc/v1.1.7/search/pages_1.js | 4 + doc/v1.1.7/search/pages_2.js | 4 + doc/v1.1.7/search/pages_3.js | 4 + doc/v1.1.7/search/search.css | 291 +++ doc/v1.1.7/search/search.js | 840 +++++++ doc/v1.1.7/search/searchdata.js | 33 + doc/v1.1.7/search/typedefs_0.js | 5 + doc/v1.1.7/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.7/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.7/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.7/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.7/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.7/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.7/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.7/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.7/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.7/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.7/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.7/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.7/tabs.css | 1 + doc/v1.1.8/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.8/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.8/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.8/doc.svg | 12 + doc/v1.1.8/docd.svg | 12 + doc/v1.1.8/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.8/doxygen.svg | 28 + doc/v1.1.8/dynsections.js | 192 ++ doc/v1.1.8/files.html | 91 + doc/v1.1.8/folderclosed.svg | 11 + doc/v1.1.8/folderclosedd.svg | 11 + doc/v1.1.8/folderopen.svg | 17 + doc/v1.1.8/folderopend.svg | 12 + doc/v1.1.8/globals.html | 121 + doc/v1.1.8/globals_enum.html | 81 + doc/v1.1.8/globals_eval.html | 83 + doc/v1.1.8/globals_func.html | 115 + doc/v1.1.8/globals_type.html | 82 + doc/v1.1.8/index.html | 210 ++ doc/v1.1.8/jquery.js | 34 + doc/v1.1.8/menu.js | 136 ++ doc/v1.1.8/menudata.js | 36 + doc/v1.1.8/minus.svg | 8 + doc/v1.1.8/minusd.svg | 8 + doc/v1.1.8/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.8/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.8/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.8/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.8/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.8/open.png | Bin 0 -> 123 bytes doc/v1.1.8/paf_8h.html | 593 +++++ doc/v1.1.8/paf_8h_source.html | 155 ++ doc/v1.1.8/paf__err_8h_source.html | 118 + doc/v1.1.8/paf__match_8h.html | 162 ++ doc/v1.1.8/paf__match_8h_source.html | 129 ++ doc/v1.1.8/paf__props_8h.html | 580 +++++ doc/v1.1.8/paf__props_8h_source.html | 160 ++ doc/v1.1.8/paf__value_8h.html | 355 +++ doc/v1.1.8/paf__value_8h_source.html | 139 ++ doc/v1.1.8/plus.svg | 9 + doc/v1.1.8/plusd.svg | 9 + doc/v1.1.8/search/all_0.js | 5 + doc/v1.1.8/search/all_1.js | 6 + doc/v1.1.8/search/all_2.js | 8 + doc/v1.1.8/search/all_3.js | 6 + doc/v1.1.8/search/all_4.js | 5 + doc/v1.1.8/search/all_5.js | 5 + doc/v1.1.8/search/all_6.js | 4 + doc/v1.1.8/search/all_7.js | 47 + doc/v1.1.8/search/all_8.js | 5 + doc/v1.1.8/search/all_9.js | 7 + doc/v1.1.8/search/all_a.js | 7 + doc/v1.1.8/search/close.svg | 18 + doc/v1.1.8/search/enums_0.js | 4 + doc/v1.1.8/search/enumvalues_0.js | 6 + doc/v1.1.8/search/files_0.js | 7 + doc/v1.1.8/search/functions_0.js | 36 + doc/v1.1.8/search/mag.svg | 24 + doc/v1.1.8/search/mag_d.svg | 24 + doc/v1.1.8/search/mag_sel.svg | 31 + doc/v1.1.8/search/mag_seld.svg | 31 + doc/v1.1.8/search/pages_0.js | 4 + doc/v1.1.8/search/pages_1.js | 4 + doc/v1.1.8/search/pages_2.js | 4 + doc/v1.1.8/search/pages_3.js | 4 + doc/v1.1.8/search/search.css | 291 +++ doc/v1.1.8/search/search.js | 840 +++++++ doc/v1.1.8/search/searchdata.js | 33 + doc/v1.1.8/search/typedefs_0.js | 5 + doc/v1.1.8/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.8/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.8/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.8/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.8/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.8/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.8/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.8/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.8/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.8/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.8/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.8/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.8/tabs.css | 1 + doc/v1.1.9/bc_s.png | Bin 0 -> 676 bytes doc/v1.1.9/bc_sd.png | Bin 0 -> 635 bytes doc/v1.1.9/closed.png | Bin 0 -> 132 bytes .../dir_d44c64559bbebec7f509842c48db8b23.html | 103 + doc/v1.1.9/doc.svg | 12 + doc/v1.1.9/docd.svg | 12 + doc/v1.1.9/doxygen.css | 2045 +++++++++++++++++ doc/v1.1.9/doxygen.svg | 28 + doc/v1.1.9/dynsections.js | 192 ++ doc/v1.1.9/files.html | 91 + doc/v1.1.9/folderclosed.svg | 11 + doc/v1.1.9/folderclosedd.svg | 11 + doc/v1.1.9/folderopen.svg | 17 + doc/v1.1.9/folderopend.svg | 12 + doc/v1.1.9/globals.html | 121 + doc/v1.1.9/globals_enum.html | 81 + doc/v1.1.9/globals_eval.html | 83 + doc/v1.1.9/globals_func.html | 115 + doc/v1.1.9/globals_type.html | 82 + doc/v1.1.9/index.html | 213 ++ doc/v1.1.9/jquery.js | 34 + doc/v1.1.9/menu.js | 136 ++ doc/v1.1.9/menudata.js | 36 + doc/v1.1.9/minus.svg | 8 + doc/v1.1.9/minusd.svg | 8 + doc/v1.1.9/nav_f.png | Bin 0 -> 153 bytes doc/v1.1.9/nav_fd.png | Bin 0 -> 169 bytes doc/v1.1.9/nav_g.png | Bin 0 -> 95 bytes doc/v1.1.9/nav_h.png | Bin 0 -> 98 bytes doc/v1.1.9/nav_hd.png | Bin 0 -> 114 bytes doc/v1.1.9/open.png | Bin 0 -> 123 bytes doc/v1.1.9/paf_8h.html | 593 +++++ doc/v1.1.9/paf_8h_source.html | 155 ++ doc/v1.1.9/paf__err_8h_source.html | 118 + doc/v1.1.9/paf__match_8h.html | 162 ++ doc/v1.1.9/paf__match_8h_source.html | 129 ++ doc/v1.1.9/paf__props_8h.html | 580 +++++ doc/v1.1.9/paf__props_8h_source.html | 160 ++ doc/v1.1.9/paf__value_8h.html | 355 +++ doc/v1.1.9/paf__value_8h_source.html | 139 ++ doc/v1.1.9/plus.svg | 9 + doc/v1.1.9/plusd.svg | 9 + doc/v1.1.9/search/all_0.js | 5 + doc/v1.1.9/search/all_1.js | 6 + doc/v1.1.9/search/all_2.js | 8 + doc/v1.1.9/search/all_3.js | 6 + doc/v1.1.9/search/all_4.js | 5 + doc/v1.1.9/search/all_5.js | 5 + doc/v1.1.9/search/all_6.js | 4 + doc/v1.1.9/search/all_7.js | 47 + doc/v1.1.9/search/all_8.js | 5 + doc/v1.1.9/search/all_9.js | 7 + doc/v1.1.9/search/all_a.js | 7 + doc/v1.1.9/search/close.svg | 18 + doc/v1.1.9/search/enums_0.js | 4 + doc/v1.1.9/search/enumvalues_0.js | 6 + doc/v1.1.9/search/files_0.js | 7 + doc/v1.1.9/search/functions_0.js | 36 + doc/v1.1.9/search/mag.svg | 24 + doc/v1.1.9/search/mag_d.svg | 24 + doc/v1.1.9/search/mag_sel.svg | 31 + doc/v1.1.9/search/mag_seld.svg | 31 + doc/v1.1.9/search/pages_0.js | 4 + doc/v1.1.9/search/pages_1.js | 4 + doc/v1.1.9/search/pages_2.js | 4 + doc/v1.1.9/search/pages_3.js | 4 + doc/v1.1.9/search/search.css | 291 +++ doc/v1.1.9/search/search.js | 840 +++++++ doc/v1.1.9/search/searchdata.js | 33 + doc/v1.1.9/search/typedefs_0.js | 5 + doc/v1.1.9/splitbar.png | Bin 0 -> 314 bytes doc/v1.1.9/splitbard.png | Bin 0 -> 282 bytes doc/v1.1.9/sync_off.png | Bin 0 -> 853 bytes doc/v1.1.9/sync_on.png | Bin 0 -> 845 bytes doc/v1.1.9/tab_a.png | Bin 0 -> 142 bytes doc/v1.1.9/tab_ad.png | Bin 0 -> 135 bytes doc/v1.1.9/tab_b.png | Bin 0 -> 169 bytes doc/v1.1.9/tab_bd.png | Bin 0 -> 173 bytes doc/v1.1.9/tab_h.png | Bin 0 -> 177 bytes doc/v1.1.9/tab_hd.png | Bin 0 -> 180 bytes doc/v1.1.9/tab_s.png | Bin 0 -> 184 bytes doc/v1.1.9/tab_sd.png | Bin 0 -> 188 bytes doc/v1.1.9/tabs.css | 1 + 1578 files changed, 138758 insertions(+) create mode 100644 .nojekyll create mode 100644 api/0.0/bc_s.png create mode 100644 api/0.0/bc_sd.png create mode 100644 api/0.0/closed.png create mode 100644 api/0.0/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 api/0.0/doc.svg create mode 100644 api/0.0/docd.svg create mode 100644 api/0.0/doxygen.css create mode 100644 api/0.0/doxygen.svg create mode 100644 api/0.0/dynsections.js create mode 100644 api/0.0/files.html create mode 100644 api/0.0/folderclosed.svg create mode 100644 api/0.0/folderclosedd.svg create mode 100644 api/0.0/folderopen.svg create mode 100644 api/0.0/folderopend.svg create mode 100644 api/0.0/globals.html create mode 100644 api/0.0/globals_enum.html create mode 100644 api/0.0/globals_eval.html create mode 100644 api/0.0/globals_func.html create mode 100644 api/0.0/globals_type.html create mode 100644 api/0.0/index.html create mode 100644 api/0.0/jquery.js create mode 100644 api/0.0/menu.js create mode 100644 api/0.0/menudata.js create mode 100644 api/0.0/minus.svg create mode 100644 api/0.0/minusd.svg create mode 100644 api/0.0/nav_f.png create mode 100644 api/0.0/nav_fd.png create mode 100644 api/0.0/nav_g.png create mode 100644 api/0.0/nav_h.png create mode 100644 api/0.0/nav_hd.png create mode 100644 api/0.0/open.png create mode 100644 api/0.0/paf_8h.html create mode 100644 api/0.0/paf_8h_source.html create mode 100644 api/0.0/paf__err_8h_source.html create mode 100644 api/0.0/paf__match_8h.html create mode 100644 api/0.0/paf__match_8h_source.html create mode 100644 api/0.0/paf__props_8h.html create mode 100644 api/0.0/paf__props_8h_source.html create mode 100644 api/0.0/paf__value_8h.html create mode 100644 api/0.0/paf__value_8h_source.html create mode 100644 api/0.0/plus.svg create mode 100644 api/0.0/plusd.svg create mode 100644 api/0.0/search/all_0.js create mode 100644 api/0.0/search/all_1.js create mode 100644 api/0.0/search/all_2.js create mode 100644 api/0.0/search/all_3.js create mode 100644 api/0.0/search/all_4.js create mode 100644 api/0.0/search/all_5.js create mode 100644 api/0.0/search/all_6.js create mode 100644 api/0.0/search/all_7.js create mode 100644 api/0.0/search/all_8.js create mode 100644 api/0.0/search/all_9.js create mode 100644 api/0.0/search/all_a.js create mode 100644 api/0.0/search/close.svg create mode 100644 api/0.0/search/enums_0.js create mode 100644 api/0.0/search/enumvalues_0.js create mode 100644 api/0.0/search/files_0.js create mode 100644 api/0.0/search/functions_0.js create mode 100644 api/0.0/search/mag.svg create mode 100644 api/0.0/search/mag_d.svg create mode 100644 api/0.0/search/mag_sel.svg create mode 100644 api/0.0/search/mag_seld.svg create mode 100644 api/0.0/search/pages_0.js create mode 100644 api/0.0/search/pages_1.js create mode 100644 api/0.0/search/pages_2.js create mode 100644 api/0.0/search/pages_3.js create mode 100644 api/0.0/search/search.css create mode 100644 api/0.0/search/search.js create mode 100644 api/0.0/search/searchdata.js create mode 100644 api/0.0/search/typedefs_0.js create mode 100644 api/0.0/splitbar.png create mode 100644 api/0.0/splitbard.png create mode 100644 api/0.0/sync_off.png create mode 100644 api/0.0/sync_on.png create mode 100644 api/0.0/tab_a.png create mode 100644 api/0.0/tab_ad.png create mode 100644 api/0.0/tab_b.png create mode 100644 api/0.0/tab_bd.png create mode 100644 api/0.0/tab_h.png create mode 100644 api/0.0/tab_hd.png create mode 100644 api/0.0/tab_s.png create mode 100644 api/0.0/tab_sd.png create mode 100644 api/0.0/tabs.css create mode 100644 api/0.1/bc_s.png create mode 100644 api/0.1/bc_sd.png create mode 100644 api/0.1/closed.png create mode 100644 api/0.1/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 api/0.1/doc.svg create mode 100644 api/0.1/docd.svg create mode 100644 api/0.1/doxygen.css create mode 100644 api/0.1/doxygen.svg create mode 100644 api/0.1/dynsections.js create mode 100644 api/0.1/files.html create mode 100644 api/0.1/folderclosed.svg create mode 100644 api/0.1/folderclosedd.svg create mode 100644 api/0.1/folderopen.svg create mode 100644 api/0.1/folderopend.svg create mode 100644 api/0.1/globals.html create mode 100644 api/0.1/globals_enum.html create mode 100644 api/0.1/globals_eval.html create mode 100644 api/0.1/globals_func.html create mode 100644 api/0.1/globals_type.html create mode 100644 api/0.1/index.html create mode 100644 api/0.1/jquery.js create mode 100644 api/0.1/menu.js create mode 100644 api/0.1/menudata.js create mode 100644 api/0.1/minus.svg create mode 100644 api/0.1/minusd.svg create mode 100644 api/0.1/nav_f.png create mode 100644 api/0.1/nav_fd.png create mode 100644 api/0.1/nav_g.png create mode 100644 api/0.1/nav_h.png create mode 100644 api/0.1/nav_hd.png create mode 100644 api/0.1/open.png create mode 100644 api/0.1/paf_8h.html create mode 100644 api/0.1/paf_8h_source.html create mode 100644 api/0.1/paf__err_8h_source.html create mode 100644 api/0.1/paf__match_8h.html create mode 100644 api/0.1/paf__match_8h_source.html create mode 100644 api/0.1/paf__props_8h.html create mode 100644 api/0.1/paf__props_8h_source.html create mode 100644 api/0.1/paf__value_8h.html create mode 100644 api/0.1/paf__value_8h_source.html create mode 100644 api/0.1/plus.svg create mode 100644 api/0.1/plusd.svg create mode 100644 api/0.1/search/all_0.js create mode 100644 api/0.1/search/all_1.js create mode 100644 api/0.1/search/all_2.js create mode 100644 api/0.1/search/all_3.js create mode 100644 api/0.1/search/all_4.js create mode 100644 api/0.1/search/all_5.js create mode 100644 api/0.1/search/all_6.js create mode 100644 api/0.1/search/all_7.js create mode 100644 api/0.1/search/all_8.js create mode 100644 api/0.1/search/all_9.js create mode 100644 api/0.1/search/all_a.js create mode 100644 api/0.1/search/close.svg create mode 100644 api/0.1/search/enums_0.js create mode 100644 api/0.1/search/enumvalues_0.js create mode 100644 api/0.1/search/files_0.js create mode 100644 api/0.1/search/functions_0.js create mode 100644 api/0.1/search/mag.svg create mode 100644 api/0.1/search/mag_d.svg create mode 100644 api/0.1/search/mag_sel.svg create mode 100644 api/0.1/search/mag_seld.svg create mode 100644 api/0.1/search/pages_0.js create mode 100644 api/0.1/search/pages_1.js create mode 100644 api/0.1/search/pages_2.js create mode 100644 api/0.1/search/pages_3.js create mode 100644 api/0.1/search/search.css create mode 100644 api/0.1/search/search.js create mode 100644 api/0.1/search/searchdata.js create mode 100644 api/0.1/search/typedefs_0.js create mode 100644 api/0.1/splitbar.png create mode 100644 api/0.1/splitbard.png create mode 100644 api/0.1/sync_off.png create mode 100644 api/0.1/sync_on.png create mode 100644 api/0.1/tab_a.png create mode 100644 api/0.1/tab_ad.png create mode 100644 api/0.1/tab_b.png create mode 100644 api/0.1/tab_bd.png create mode 100644 api/0.1/tab_h.png create mode 100644 api/0.1/tab_hd.png create mode 100644 api/0.1/tab_s.png create mode 100644 api/0.1/tab_sd.png create mode 100644 api/0.1/tabs.css create mode 100644 api/head/bc_s.png create mode 100644 api/head/bc_sd.png create mode 100644 api/head/closed.png create mode 100644 api/head/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 api/head/doc.svg create mode 100644 api/head/docd.svg create mode 100644 api/head/doxygen.css create mode 100644 api/head/doxygen.svg create mode 100644 api/head/dynsections.js create mode 100644 api/head/files.html create mode 100644 api/head/folderclosed.svg create mode 100644 api/head/folderclosedd.svg create mode 100644 api/head/folderopen.svg create mode 100644 api/head/folderopend.svg create mode 100644 api/head/globals.html create mode 100644 api/head/globals_enum.html create mode 100644 api/head/globals_eval.html create mode 100644 api/head/globals_func.html create mode 100644 api/head/globals_type.html create mode 100644 api/head/index.html create mode 100644 api/head/jquery.js create mode 100644 api/head/menu.js create mode 100644 api/head/menudata.js create mode 100644 api/head/minus.svg create mode 100644 api/head/minusd.svg create mode 100644 api/head/nav_f.png create mode 100644 api/head/nav_fd.png create mode 100644 api/head/nav_g.png create mode 100644 api/head/nav_h.png create mode 100644 api/head/nav_hd.png create mode 100644 api/head/open.png create mode 100644 api/head/paf_8h.html create mode 100644 api/head/paf_8h_source.html create mode 100644 api/head/paf__err_8h_source.html create mode 100644 api/head/paf__match_8h.html create mode 100644 api/head/paf__match_8h_source.html create mode 100644 api/head/paf__props_8h.html create mode 100644 api/head/paf__props_8h_source.html create mode 100644 api/head/paf__value_8h.html create mode 100644 api/head/paf__value_8h_source.html create mode 100644 api/head/plus.svg create mode 100644 api/head/plusd.svg create mode 100644 api/head/search/all_0.js create mode 100644 api/head/search/all_1.js create mode 100644 api/head/search/all_2.js create mode 100644 api/head/search/all_3.js create mode 100644 api/head/search/all_4.js create mode 100644 api/head/search/all_5.js create mode 100644 api/head/search/all_6.js create mode 100644 api/head/search/all_7.js create mode 100644 api/head/search/all_8.js create mode 100644 api/head/search/all_9.js create mode 100644 api/head/search/all_a.js create mode 100644 api/head/search/close.svg create mode 100644 api/head/search/enums_0.js create mode 100644 api/head/search/enumvalues_0.js create mode 100644 api/head/search/files_0.js create mode 100644 api/head/search/functions_0.js create mode 100644 api/head/search/mag.svg create mode 100644 api/head/search/mag_d.svg create mode 100644 api/head/search/mag_sel.svg create mode 100644 api/head/search/mag_seld.svg create mode 100644 api/head/search/pages_0.js create mode 100644 api/head/search/pages_1.js create mode 100644 api/head/search/pages_2.js create mode 100644 api/head/search/pages_3.js create mode 100644 api/head/search/search.css create mode 100644 api/head/search/search.js create mode 100644 api/head/search/searchdata.js create mode 100644 api/head/search/typedefs_0.js create mode 100644 api/head/splitbar.png create mode 100644 api/head/splitbard.png create mode 100644 api/head/sync_off.png create mode 100644 api/head/sync_on.png create mode 100644 api/head/tab_a.png create mode 100644 api/head/tab_ad.png create mode 100644 api/head/tab_b.png create mode 100644 api/head/tab_bd.png create mode 100644 api/head/tab_h.png create mode 100644 api/head/tab_hd.png create mode 100644 api/head/tab_s.png create mode 100644 api/head/tab_sd.png create mode 100644 api/head/tabs.css create mode 100644 api/latest/bc_s.png create mode 100644 api/latest/bc_sd.png create mode 100644 api/latest/closed.png create mode 100644 api/latest/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 api/latest/doc.svg create mode 100644 api/latest/docd.svg create mode 100644 api/latest/doxygen.css create mode 100644 api/latest/doxygen.svg create mode 100644 api/latest/dynsections.js create mode 100644 api/latest/files.html create mode 100644 api/latest/folderclosed.svg create mode 100644 api/latest/folderclosedd.svg create mode 100644 api/latest/folderopen.svg create mode 100644 api/latest/folderopend.svg create mode 100644 api/latest/globals.html create mode 100644 api/latest/globals_enum.html create mode 100644 api/latest/globals_eval.html create mode 100644 api/latest/globals_func.html create mode 100644 api/latest/globals_type.html create mode 100644 api/latest/index.html create mode 100644 api/latest/jquery.js create mode 100644 api/latest/menu.js create mode 100644 api/latest/menudata.js create mode 100644 api/latest/minus.svg create mode 100644 api/latest/minusd.svg create mode 100644 api/latest/nav_f.png create mode 100644 api/latest/nav_fd.png create mode 100644 api/latest/nav_g.png create mode 100644 api/latest/nav_h.png create mode 100644 api/latest/nav_hd.png create mode 100644 api/latest/open.png create mode 100644 api/latest/paf_8h.html create mode 100644 api/latest/paf_8h_source.html create mode 100644 api/latest/paf__err_8h_source.html create mode 100644 api/latest/paf__match_8h.html create mode 100644 api/latest/paf__match_8h_source.html create mode 100644 api/latest/paf__props_8h.html create mode 100644 api/latest/paf__props_8h_source.html create mode 100644 api/latest/paf__value_8h.html create mode 100644 api/latest/paf__value_8h_source.html create mode 100644 api/latest/plus.svg create mode 100644 api/latest/plusd.svg create mode 100644 api/latest/search/all_0.js create mode 100644 api/latest/search/all_1.js create mode 100644 api/latest/search/all_2.js create mode 100644 api/latest/search/all_3.js create mode 100644 api/latest/search/all_4.js create mode 100644 api/latest/search/all_5.js create mode 100644 api/latest/search/all_6.js create mode 100644 api/latest/search/all_7.js create mode 100644 api/latest/search/all_8.js create mode 100644 api/latest/search/all_9.js create mode 100644 api/latest/search/all_a.js create mode 100644 api/latest/search/close.svg create mode 100644 api/latest/search/enums_0.js create mode 100644 api/latest/search/enumvalues_0.js create mode 100644 api/latest/search/files_0.js create mode 100644 api/latest/search/functions_0.js create mode 100644 api/latest/search/mag.svg create mode 100644 api/latest/search/mag_d.svg create mode 100644 api/latest/search/mag_sel.svg create mode 100644 api/latest/search/mag_seld.svg create mode 100644 api/latest/search/pages_0.js create mode 100644 api/latest/search/pages_1.js create mode 100644 api/latest/search/pages_2.js create mode 100644 api/latest/search/pages_3.js create mode 100644 api/latest/search/search.css create mode 100644 api/latest/search/search.js create mode 100644 api/latest/search/searchdata.js create mode 100644 api/latest/search/typedefs_0.js create mode 100644 api/latest/splitbar.png create mode 100644 api/latest/splitbard.png create mode 100644 api/latest/sync_off.png create mode 100644 api/latest/sync_on.png create mode 100644 api/latest/tab_a.png create mode 100644 api/latest/tab_ad.png create mode 100644 api/latest/tab_b.png create mode 100644 api/latest/tab_bd.png create mode 100644 api/latest/tab_h.png create mode 100644 api/latest/tab_hd.png create mode 100644 api/latest/tab_s.png create mode 100644 api/latest/tab_sd.png create mode 100644 api/latest/tabs.css create mode 100644 doc/v1.0.0/bc_s.png create mode 100644 doc/v1.0.0/bc_sd.png create mode 100644 doc/v1.0.0/closed.png create mode 100644 doc/v1.0.0/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.0.0/doc.svg create mode 100644 doc/v1.0.0/docd.svg create mode 100644 doc/v1.0.0/doxygen.css create mode 100644 doc/v1.0.0/doxygen.svg create mode 100644 doc/v1.0.0/dynsections.js create mode 100644 doc/v1.0.0/files.html create mode 100644 doc/v1.0.0/folderclosed.svg create mode 100644 doc/v1.0.0/folderclosedd.svg create mode 100644 doc/v1.0.0/folderopen.svg create mode 100644 doc/v1.0.0/folderopend.svg create mode 100644 doc/v1.0.0/globals.html create mode 100644 doc/v1.0.0/globals_enum.html create mode 100644 doc/v1.0.0/globals_eval.html create mode 100644 doc/v1.0.0/globals_func.html create mode 100644 doc/v1.0.0/globals_type.html create mode 100644 doc/v1.0.0/index.html create mode 100644 doc/v1.0.0/jquery.js create mode 100644 doc/v1.0.0/menu.js create mode 100644 doc/v1.0.0/menudata.js create mode 100644 doc/v1.0.0/minus.svg create mode 100644 doc/v1.0.0/minusd.svg create mode 100644 doc/v1.0.0/nav_f.png create mode 100644 doc/v1.0.0/nav_fd.png create mode 100644 doc/v1.0.0/nav_g.png create mode 100644 doc/v1.0.0/nav_h.png create mode 100644 doc/v1.0.0/nav_hd.png create mode 100644 doc/v1.0.0/open.png create mode 100644 doc/v1.0.0/paf_8h.html create mode 100644 doc/v1.0.0/paf_8h_source.html create mode 100644 doc/v1.0.0/paf__err_8h_source.html create mode 100644 doc/v1.0.0/paf__match_8h.html create mode 100644 doc/v1.0.0/paf__match_8h_source.html create mode 100644 doc/v1.0.0/paf__props_8h.html create mode 100644 doc/v1.0.0/paf__props_8h_source.html create mode 100644 doc/v1.0.0/paf__value_8h.html create mode 100644 doc/v1.0.0/paf__value_8h_source.html create mode 100644 doc/v1.0.0/plus.svg create mode 100644 doc/v1.0.0/plusd.svg create mode 100644 doc/v1.0.0/search/all_0.js create mode 100644 doc/v1.0.0/search/all_1.js create mode 100644 doc/v1.0.0/search/all_2.js create mode 100644 doc/v1.0.0/search/all_3.js create mode 100644 doc/v1.0.0/search/all_4.js create mode 100644 doc/v1.0.0/search/all_5.js create mode 100644 doc/v1.0.0/search/all_6.js create mode 100644 doc/v1.0.0/search/all_7.js create mode 100644 doc/v1.0.0/search/all_8.js create mode 100644 doc/v1.0.0/search/all_9.js create mode 100644 doc/v1.0.0/search/all_a.js create mode 100644 doc/v1.0.0/search/close.svg create mode 100644 doc/v1.0.0/search/enums_0.js create mode 100644 doc/v1.0.0/search/enumvalues_0.js create mode 100644 doc/v1.0.0/search/files_0.js create mode 100644 doc/v1.0.0/search/functions_0.js create mode 100644 doc/v1.0.0/search/mag.svg create mode 100644 doc/v1.0.0/search/mag_d.svg create mode 100644 doc/v1.0.0/search/mag_sel.svg create mode 100644 doc/v1.0.0/search/mag_seld.svg create mode 100644 doc/v1.0.0/search/pages_0.js create mode 100644 doc/v1.0.0/search/pages_1.js create mode 100644 doc/v1.0.0/search/pages_2.js create mode 100644 doc/v1.0.0/search/pages_3.js create mode 100644 doc/v1.0.0/search/search.css create mode 100644 doc/v1.0.0/search/search.js create mode 100644 doc/v1.0.0/search/searchdata.js create mode 100644 doc/v1.0.0/search/typedefs_0.js create mode 100644 doc/v1.0.0/splitbar.png create mode 100644 doc/v1.0.0/splitbard.png create mode 100644 doc/v1.0.0/sync_off.png create mode 100644 doc/v1.0.0/sync_on.png create mode 100644 doc/v1.0.0/tab_a.png create mode 100644 doc/v1.0.0/tab_ad.png create mode 100644 doc/v1.0.0/tab_b.png create mode 100644 doc/v1.0.0/tab_bd.png create mode 100644 doc/v1.0.0/tab_h.png create mode 100644 doc/v1.0.0/tab_hd.png create mode 100644 doc/v1.0.0/tab_s.png create mode 100644 doc/v1.0.0/tab_sd.png create mode 100644 doc/v1.0.0/tabs.css create mode 100644 doc/v1.0.1/bc_s.png create mode 100644 doc/v1.0.1/bc_sd.png create mode 100644 doc/v1.0.1/closed.png create mode 100644 doc/v1.0.1/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.0.1/doc.svg create mode 100644 doc/v1.0.1/docd.svg create mode 100644 doc/v1.0.1/doxygen.css create mode 100644 doc/v1.0.1/doxygen.svg create mode 100644 doc/v1.0.1/dynsections.js create mode 100644 doc/v1.0.1/files.html create mode 100644 doc/v1.0.1/folderclosed.svg create mode 100644 doc/v1.0.1/folderclosedd.svg create mode 100644 doc/v1.0.1/folderopen.svg create mode 100644 doc/v1.0.1/folderopend.svg create mode 100644 doc/v1.0.1/globals.html create mode 100644 doc/v1.0.1/globals_enum.html create mode 100644 doc/v1.0.1/globals_eval.html create mode 100644 doc/v1.0.1/globals_func.html create mode 100644 doc/v1.0.1/globals_type.html create mode 100644 doc/v1.0.1/index.html create mode 100644 doc/v1.0.1/jquery.js create mode 100644 doc/v1.0.1/menu.js create mode 100644 doc/v1.0.1/menudata.js create mode 100644 doc/v1.0.1/minus.svg create mode 100644 doc/v1.0.1/minusd.svg create mode 100644 doc/v1.0.1/nav_f.png create mode 100644 doc/v1.0.1/nav_fd.png create mode 100644 doc/v1.0.1/nav_g.png create mode 100644 doc/v1.0.1/nav_h.png create mode 100644 doc/v1.0.1/nav_hd.png create mode 100644 doc/v1.0.1/open.png create mode 100644 doc/v1.0.1/paf_8h.html create mode 100644 doc/v1.0.1/paf_8h_source.html create mode 100644 doc/v1.0.1/paf__err_8h_source.html create mode 100644 doc/v1.0.1/paf__match_8h.html create mode 100644 doc/v1.0.1/paf__match_8h_source.html create mode 100644 doc/v1.0.1/paf__props_8h.html create mode 100644 doc/v1.0.1/paf__props_8h_source.html create mode 100644 doc/v1.0.1/paf__value_8h.html create mode 100644 doc/v1.0.1/paf__value_8h_source.html create mode 100644 doc/v1.0.1/plus.svg create mode 100644 doc/v1.0.1/plusd.svg create mode 100644 doc/v1.0.1/search/all_0.js create mode 100644 doc/v1.0.1/search/all_1.js create mode 100644 doc/v1.0.1/search/all_2.js create mode 100644 doc/v1.0.1/search/all_3.js create mode 100644 doc/v1.0.1/search/all_4.js create mode 100644 doc/v1.0.1/search/all_5.js create mode 100644 doc/v1.0.1/search/all_6.js create mode 100644 doc/v1.0.1/search/all_7.js create mode 100644 doc/v1.0.1/search/all_8.js create mode 100644 doc/v1.0.1/search/all_9.js create mode 100644 doc/v1.0.1/search/all_a.js create mode 100644 doc/v1.0.1/search/close.svg create mode 100644 doc/v1.0.1/search/enums_0.js create mode 100644 doc/v1.0.1/search/enumvalues_0.js create mode 100644 doc/v1.0.1/search/files_0.js create mode 100644 doc/v1.0.1/search/functions_0.js create mode 100644 doc/v1.0.1/search/mag.svg create mode 100644 doc/v1.0.1/search/mag_d.svg create mode 100644 doc/v1.0.1/search/mag_sel.svg create mode 100644 doc/v1.0.1/search/mag_seld.svg create mode 100644 doc/v1.0.1/search/pages_0.js create mode 100644 doc/v1.0.1/search/pages_1.js create mode 100644 doc/v1.0.1/search/pages_2.js create mode 100644 doc/v1.0.1/search/pages_3.js create mode 100644 doc/v1.0.1/search/search.css create mode 100644 doc/v1.0.1/search/search.js create mode 100644 doc/v1.0.1/search/searchdata.js create mode 100644 doc/v1.0.1/search/typedefs_0.js create mode 100644 doc/v1.0.1/splitbar.png create mode 100644 doc/v1.0.1/splitbard.png create mode 100644 doc/v1.0.1/sync_off.png create mode 100644 doc/v1.0.1/sync_on.png create mode 100644 doc/v1.0.1/tab_a.png create mode 100644 doc/v1.0.1/tab_ad.png create mode 100644 doc/v1.0.1/tab_b.png create mode 100644 doc/v1.0.1/tab_bd.png create mode 100644 doc/v1.0.1/tab_h.png create mode 100644 doc/v1.0.1/tab_hd.png create mode 100644 doc/v1.0.1/tab_s.png create mode 100644 doc/v1.0.1/tab_sd.png create mode 100644 doc/v1.0.1/tabs.css create mode 100644 doc/v1.1.0/bc_s.png create mode 100644 doc/v1.1.0/bc_sd.png create mode 100644 doc/v1.1.0/closed.png create mode 100644 doc/v1.1.0/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.0/doc.svg create mode 100644 doc/v1.1.0/docd.svg create mode 100644 doc/v1.1.0/doxygen.css create mode 100644 doc/v1.1.0/doxygen.svg create mode 100644 doc/v1.1.0/dynsections.js create mode 100644 doc/v1.1.0/files.html create mode 100644 doc/v1.1.0/folderclosed.svg create mode 100644 doc/v1.1.0/folderclosedd.svg create mode 100644 doc/v1.1.0/folderopen.svg create mode 100644 doc/v1.1.0/folderopend.svg create mode 100644 doc/v1.1.0/globals.html create mode 100644 doc/v1.1.0/globals_enum.html create mode 100644 doc/v1.1.0/globals_eval.html create mode 100644 doc/v1.1.0/globals_func.html create mode 100644 doc/v1.1.0/globals_type.html create mode 100644 doc/v1.1.0/index.html create mode 100644 doc/v1.1.0/jquery.js create mode 100644 doc/v1.1.0/menu.js create mode 100644 doc/v1.1.0/menudata.js create mode 100644 doc/v1.1.0/minus.svg create mode 100644 doc/v1.1.0/minusd.svg create mode 100644 doc/v1.1.0/nav_f.png create mode 100644 doc/v1.1.0/nav_fd.png create mode 100644 doc/v1.1.0/nav_g.png create mode 100644 doc/v1.1.0/nav_h.png create mode 100644 doc/v1.1.0/nav_hd.png create mode 100644 doc/v1.1.0/open.png create mode 100644 doc/v1.1.0/paf_8h.html create mode 100644 doc/v1.1.0/paf_8h_source.html create mode 100644 doc/v1.1.0/paf__err_8h_source.html create mode 100644 doc/v1.1.0/paf__match_8h.html create mode 100644 doc/v1.1.0/paf__match_8h_source.html create mode 100644 doc/v1.1.0/paf__props_8h.html create mode 100644 doc/v1.1.0/paf__props_8h_source.html create mode 100644 doc/v1.1.0/paf__value_8h.html create mode 100644 doc/v1.1.0/paf__value_8h_source.html create mode 100644 doc/v1.1.0/plus.svg create mode 100644 doc/v1.1.0/plusd.svg create mode 100644 doc/v1.1.0/search/all_0.js create mode 100644 doc/v1.1.0/search/all_1.js create mode 100644 doc/v1.1.0/search/all_2.js create mode 100644 doc/v1.1.0/search/all_3.js create mode 100644 doc/v1.1.0/search/all_4.js create mode 100644 doc/v1.1.0/search/all_5.js create mode 100644 doc/v1.1.0/search/all_6.js create mode 100644 doc/v1.1.0/search/all_7.js create mode 100644 doc/v1.1.0/search/all_8.js create mode 100644 doc/v1.1.0/search/all_9.js create mode 100644 doc/v1.1.0/search/all_a.js create mode 100644 doc/v1.1.0/search/close.svg create mode 100644 doc/v1.1.0/search/enums_0.js create mode 100644 doc/v1.1.0/search/enumvalues_0.js create mode 100644 doc/v1.1.0/search/files_0.js create mode 100644 doc/v1.1.0/search/functions_0.js create mode 100644 doc/v1.1.0/search/mag.svg create mode 100644 doc/v1.1.0/search/mag_d.svg create mode 100644 doc/v1.1.0/search/mag_sel.svg create mode 100644 doc/v1.1.0/search/mag_seld.svg create mode 100644 doc/v1.1.0/search/pages_0.js create mode 100644 doc/v1.1.0/search/pages_1.js create mode 100644 doc/v1.1.0/search/pages_2.js create mode 100644 doc/v1.1.0/search/pages_3.js create mode 100644 doc/v1.1.0/search/search.css create mode 100644 doc/v1.1.0/search/search.js create mode 100644 doc/v1.1.0/search/searchdata.js create mode 100644 doc/v1.1.0/search/typedefs_0.js create mode 100644 doc/v1.1.0/splitbar.png create mode 100644 doc/v1.1.0/splitbard.png create mode 100644 doc/v1.1.0/sync_off.png create mode 100644 doc/v1.1.0/sync_on.png create mode 100644 doc/v1.1.0/tab_a.png create mode 100644 doc/v1.1.0/tab_ad.png create mode 100644 doc/v1.1.0/tab_b.png create mode 100644 doc/v1.1.0/tab_bd.png create mode 100644 doc/v1.1.0/tab_h.png create mode 100644 doc/v1.1.0/tab_hd.png create mode 100644 doc/v1.1.0/tab_s.png create mode 100644 doc/v1.1.0/tab_sd.png create mode 100644 doc/v1.1.0/tabs.css create mode 100644 doc/v1.1.1/bc_s.png create mode 100644 doc/v1.1.1/bc_sd.png create mode 100644 doc/v1.1.1/closed.png create mode 100644 doc/v1.1.1/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.1/doc.svg create mode 100644 doc/v1.1.1/docd.svg create mode 100644 doc/v1.1.1/doxygen.css create mode 100644 doc/v1.1.1/doxygen.svg create mode 100644 doc/v1.1.1/dynsections.js create mode 100644 doc/v1.1.1/files.html create mode 100644 doc/v1.1.1/folderclosed.svg create mode 100644 doc/v1.1.1/folderclosedd.svg create mode 100644 doc/v1.1.1/folderopen.svg create mode 100644 doc/v1.1.1/folderopend.svg create mode 100644 doc/v1.1.1/globals.html create mode 100644 doc/v1.1.1/globals_enum.html create mode 100644 doc/v1.1.1/globals_eval.html create mode 100644 doc/v1.1.1/globals_func.html create mode 100644 doc/v1.1.1/globals_type.html create mode 100644 doc/v1.1.1/index.html create mode 100644 doc/v1.1.1/jquery.js create mode 100644 doc/v1.1.1/menu.js create mode 100644 doc/v1.1.1/menudata.js create mode 100644 doc/v1.1.1/minus.svg create mode 100644 doc/v1.1.1/minusd.svg create mode 100644 doc/v1.1.1/nav_f.png create mode 100644 doc/v1.1.1/nav_fd.png create mode 100644 doc/v1.1.1/nav_g.png create mode 100644 doc/v1.1.1/nav_h.png create mode 100644 doc/v1.1.1/nav_hd.png create mode 100644 doc/v1.1.1/open.png create mode 100644 doc/v1.1.1/paf_8h.html create mode 100644 doc/v1.1.1/paf_8h_source.html create mode 100644 doc/v1.1.1/paf__err_8h_source.html create mode 100644 doc/v1.1.1/paf__match_8h.html create mode 100644 doc/v1.1.1/paf__match_8h_source.html create mode 100644 doc/v1.1.1/paf__props_8h.html create mode 100644 doc/v1.1.1/paf__props_8h_source.html create mode 100644 doc/v1.1.1/paf__value_8h.html create mode 100644 doc/v1.1.1/paf__value_8h_source.html create mode 100644 doc/v1.1.1/plus.svg create mode 100644 doc/v1.1.1/plusd.svg create mode 100644 doc/v1.1.1/search/all_0.js create mode 100644 doc/v1.1.1/search/all_1.js create mode 100644 doc/v1.1.1/search/all_2.js create mode 100644 doc/v1.1.1/search/all_3.js create mode 100644 doc/v1.1.1/search/all_4.js create mode 100644 doc/v1.1.1/search/all_5.js create mode 100644 doc/v1.1.1/search/all_6.js create mode 100644 doc/v1.1.1/search/all_7.js create mode 100644 doc/v1.1.1/search/all_8.js create mode 100644 doc/v1.1.1/search/all_9.js create mode 100644 doc/v1.1.1/search/all_a.js create mode 100644 doc/v1.1.1/search/close.svg create mode 100644 doc/v1.1.1/search/enums_0.js create mode 100644 doc/v1.1.1/search/enumvalues_0.js create mode 100644 doc/v1.1.1/search/files_0.js create mode 100644 doc/v1.1.1/search/functions_0.js create mode 100644 doc/v1.1.1/search/mag.svg create mode 100644 doc/v1.1.1/search/mag_d.svg create mode 100644 doc/v1.1.1/search/mag_sel.svg create mode 100644 doc/v1.1.1/search/mag_seld.svg create mode 100644 doc/v1.1.1/search/pages_0.js create mode 100644 doc/v1.1.1/search/pages_1.js create mode 100644 doc/v1.1.1/search/pages_2.js create mode 100644 doc/v1.1.1/search/pages_3.js create mode 100644 doc/v1.1.1/search/search.css create mode 100644 doc/v1.1.1/search/search.js create mode 100644 doc/v1.1.1/search/searchdata.js create mode 100644 doc/v1.1.1/search/typedefs_0.js create mode 100644 doc/v1.1.1/splitbar.png create mode 100644 doc/v1.1.1/splitbard.png create mode 100644 doc/v1.1.1/sync_off.png create mode 100644 doc/v1.1.1/sync_on.png create mode 100644 doc/v1.1.1/tab_a.png create mode 100644 doc/v1.1.1/tab_ad.png create mode 100644 doc/v1.1.1/tab_b.png create mode 100644 doc/v1.1.1/tab_bd.png create mode 100644 doc/v1.1.1/tab_h.png create mode 100644 doc/v1.1.1/tab_hd.png create mode 100644 doc/v1.1.1/tab_s.png create mode 100644 doc/v1.1.1/tab_sd.png create mode 100644 doc/v1.1.1/tabs.css create mode 100644 doc/v1.1.10/bc_s.png create mode 100644 doc/v1.1.10/bc_sd.png create mode 100644 doc/v1.1.10/closed.png create mode 100644 doc/v1.1.10/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.10/doc.svg create mode 100644 doc/v1.1.10/docd.svg create mode 100644 doc/v1.1.10/doxygen.css create mode 100644 doc/v1.1.10/doxygen.svg create mode 100644 doc/v1.1.10/dynsections.js create mode 100644 doc/v1.1.10/files.html create mode 100644 doc/v1.1.10/folderclosed.svg create mode 100644 doc/v1.1.10/folderclosedd.svg create mode 100644 doc/v1.1.10/folderopen.svg create mode 100644 doc/v1.1.10/folderopend.svg create mode 100644 doc/v1.1.10/globals.html create mode 100644 doc/v1.1.10/globals_enum.html create mode 100644 doc/v1.1.10/globals_eval.html create mode 100644 doc/v1.1.10/globals_func.html create mode 100644 doc/v1.1.10/globals_type.html create mode 100644 doc/v1.1.10/index.html create mode 100644 doc/v1.1.10/jquery.js create mode 100644 doc/v1.1.10/menu.js create mode 100644 doc/v1.1.10/menudata.js create mode 100644 doc/v1.1.10/minus.svg create mode 100644 doc/v1.1.10/minusd.svg create mode 100644 doc/v1.1.10/nav_f.png create mode 100644 doc/v1.1.10/nav_fd.png create mode 100644 doc/v1.1.10/nav_g.png create mode 100644 doc/v1.1.10/nav_h.png create mode 100644 doc/v1.1.10/nav_hd.png create mode 100644 doc/v1.1.10/open.png create mode 100644 doc/v1.1.10/paf_8h.html create mode 100644 doc/v1.1.10/paf_8h_source.html create mode 100644 doc/v1.1.10/paf__err_8h_source.html create mode 100644 doc/v1.1.10/paf__match_8h.html create mode 100644 doc/v1.1.10/paf__match_8h_source.html create mode 100644 doc/v1.1.10/paf__props_8h.html create mode 100644 doc/v1.1.10/paf__props_8h_source.html create mode 100644 doc/v1.1.10/paf__value_8h.html create mode 100644 doc/v1.1.10/paf__value_8h_source.html create mode 100644 doc/v1.1.10/plus.svg create mode 100644 doc/v1.1.10/plusd.svg create mode 100644 doc/v1.1.10/search/all_0.js create mode 100644 doc/v1.1.10/search/all_1.js create mode 100644 doc/v1.1.10/search/all_2.js create mode 100644 doc/v1.1.10/search/all_3.js create mode 100644 doc/v1.1.10/search/all_4.js create mode 100644 doc/v1.1.10/search/all_5.js create mode 100644 doc/v1.1.10/search/all_6.js create mode 100644 doc/v1.1.10/search/all_7.js create mode 100644 doc/v1.1.10/search/all_8.js create mode 100644 doc/v1.1.10/search/all_9.js create mode 100644 doc/v1.1.10/search/all_a.js create mode 100644 doc/v1.1.10/search/close.svg create mode 100644 doc/v1.1.10/search/enums_0.js create mode 100644 doc/v1.1.10/search/enumvalues_0.js create mode 100644 doc/v1.1.10/search/files_0.js create mode 100644 doc/v1.1.10/search/functions_0.js create mode 100644 doc/v1.1.10/search/mag.svg create mode 100644 doc/v1.1.10/search/mag_d.svg create mode 100644 doc/v1.1.10/search/mag_sel.svg create mode 100644 doc/v1.1.10/search/mag_seld.svg create mode 100644 doc/v1.1.10/search/pages_0.js create mode 100644 doc/v1.1.10/search/pages_1.js create mode 100644 doc/v1.1.10/search/pages_2.js create mode 100644 doc/v1.1.10/search/pages_3.js create mode 100644 doc/v1.1.10/search/search.css create mode 100644 doc/v1.1.10/search/search.js create mode 100644 doc/v1.1.10/search/searchdata.js create mode 100644 doc/v1.1.10/search/typedefs_0.js create mode 100644 doc/v1.1.10/splitbar.png create mode 100644 doc/v1.1.10/splitbard.png create mode 100644 doc/v1.1.10/sync_off.png create mode 100644 doc/v1.1.10/sync_on.png create mode 100644 doc/v1.1.10/tab_a.png create mode 100644 doc/v1.1.10/tab_ad.png create mode 100644 doc/v1.1.10/tab_b.png create mode 100644 doc/v1.1.10/tab_bd.png create mode 100644 doc/v1.1.10/tab_h.png create mode 100644 doc/v1.1.10/tab_hd.png create mode 100644 doc/v1.1.10/tab_s.png create mode 100644 doc/v1.1.10/tab_sd.png create mode 100644 doc/v1.1.10/tabs.css create mode 100644 doc/v1.1.11/bc_s.png create mode 100644 doc/v1.1.11/bc_sd.png create mode 100644 doc/v1.1.11/closed.png create mode 100644 doc/v1.1.11/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.11/doc.svg create mode 100644 doc/v1.1.11/docd.svg create mode 100644 doc/v1.1.11/doxygen.css create mode 100644 doc/v1.1.11/doxygen.svg create mode 100644 doc/v1.1.11/dynsections.js create mode 100644 doc/v1.1.11/files.html create mode 100644 doc/v1.1.11/folderclosed.svg create mode 100644 doc/v1.1.11/folderclosedd.svg create mode 100644 doc/v1.1.11/folderopen.svg create mode 100644 doc/v1.1.11/folderopend.svg create mode 100644 doc/v1.1.11/globals.html create mode 100644 doc/v1.1.11/globals_enum.html create mode 100644 doc/v1.1.11/globals_eval.html create mode 100644 doc/v1.1.11/globals_func.html create mode 100644 doc/v1.1.11/globals_type.html create mode 100644 doc/v1.1.11/index.html create mode 100644 doc/v1.1.11/jquery.js create mode 100644 doc/v1.1.11/menu.js create mode 100644 doc/v1.1.11/menudata.js create mode 100644 doc/v1.1.11/minus.svg create mode 100644 doc/v1.1.11/minusd.svg create mode 100644 doc/v1.1.11/nav_f.png create mode 100644 doc/v1.1.11/nav_fd.png create mode 100644 doc/v1.1.11/nav_g.png create mode 100644 doc/v1.1.11/nav_h.png create mode 100644 doc/v1.1.11/nav_hd.png create mode 100644 doc/v1.1.11/open.png create mode 100644 doc/v1.1.11/paf_8h.html create mode 100644 doc/v1.1.11/paf_8h_source.html create mode 100644 doc/v1.1.11/paf__err_8h_source.html create mode 100644 doc/v1.1.11/paf__match_8h.html create mode 100644 doc/v1.1.11/paf__match_8h_source.html create mode 100644 doc/v1.1.11/paf__props_8h.html create mode 100644 doc/v1.1.11/paf__props_8h_source.html create mode 100644 doc/v1.1.11/paf__value_8h.html create mode 100644 doc/v1.1.11/paf__value_8h_source.html create mode 100644 doc/v1.1.11/plus.svg create mode 100644 doc/v1.1.11/plusd.svg create mode 100644 doc/v1.1.11/search/all_0.js create mode 100644 doc/v1.1.11/search/all_1.js create mode 100644 doc/v1.1.11/search/all_2.js create mode 100644 doc/v1.1.11/search/all_3.js create mode 100644 doc/v1.1.11/search/all_4.js create mode 100644 doc/v1.1.11/search/all_5.js create mode 100644 doc/v1.1.11/search/all_6.js create mode 100644 doc/v1.1.11/search/all_7.js create mode 100644 doc/v1.1.11/search/all_8.js create mode 100644 doc/v1.1.11/search/all_9.js create mode 100644 doc/v1.1.11/search/all_a.js create mode 100644 doc/v1.1.11/search/close.svg create mode 100644 doc/v1.1.11/search/enums_0.js create mode 100644 doc/v1.1.11/search/enumvalues_0.js create mode 100644 doc/v1.1.11/search/files_0.js create mode 100644 doc/v1.1.11/search/functions_0.js create mode 100644 doc/v1.1.11/search/mag.svg create mode 100644 doc/v1.1.11/search/mag_d.svg create mode 100644 doc/v1.1.11/search/mag_sel.svg create mode 100644 doc/v1.1.11/search/mag_seld.svg create mode 100644 doc/v1.1.11/search/pages_0.js create mode 100644 doc/v1.1.11/search/pages_1.js create mode 100644 doc/v1.1.11/search/pages_2.js create mode 100644 doc/v1.1.11/search/pages_3.js create mode 100644 doc/v1.1.11/search/search.css create mode 100644 doc/v1.1.11/search/search.js create mode 100644 doc/v1.1.11/search/searchdata.js create mode 100644 doc/v1.1.11/search/typedefs_0.js create mode 100644 doc/v1.1.11/splitbar.png create mode 100644 doc/v1.1.11/splitbard.png create mode 100644 doc/v1.1.11/sync_off.png create mode 100644 doc/v1.1.11/sync_on.png create mode 100644 doc/v1.1.11/tab_a.png create mode 100644 doc/v1.1.11/tab_ad.png create mode 100644 doc/v1.1.11/tab_b.png create mode 100644 doc/v1.1.11/tab_bd.png create mode 100644 doc/v1.1.11/tab_h.png create mode 100644 doc/v1.1.11/tab_hd.png create mode 100644 doc/v1.1.11/tab_s.png create mode 100644 doc/v1.1.11/tab_sd.png create mode 100644 doc/v1.1.11/tabs.css create mode 100644 doc/v1.1.12/bc_s.png create mode 100644 doc/v1.1.12/bc_sd.png create mode 100644 doc/v1.1.12/closed.png create mode 100644 doc/v1.1.12/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.12/doc.svg create mode 100644 doc/v1.1.12/docd.svg create mode 100644 doc/v1.1.12/doxygen.css create mode 100644 doc/v1.1.12/doxygen.svg create mode 100644 doc/v1.1.12/dynsections.js create mode 100644 doc/v1.1.12/files.html create mode 100644 doc/v1.1.12/folderclosed.svg create mode 100644 doc/v1.1.12/folderclosedd.svg create mode 100644 doc/v1.1.12/folderopen.svg create mode 100644 doc/v1.1.12/folderopend.svg create mode 100644 doc/v1.1.12/globals.html create mode 100644 doc/v1.1.12/globals_enum.html create mode 100644 doc/v1.1.12/globals_eval.html create mode 100644 doc/v1.1.12/globals_func.html create mode 100644 doc/v1.1.12/globals_type.html create mode 100644 doc/v1.1.12/index.html create mode 100644 doc/v1.1.12/jquery.js create mode 100644 doc/v1.1.12/menu.js create mode 100644 doc/v1.1.12/menudata.js create mode 100644 doc/v1.1.12/minus.svg create mode 100644 doc/v1.1.12/minusd.svg create mode 100644 doc/v1.1.12/nav_f.png create mode 100644 doc/v1.1.12/nav_fd.png create mode 100644 doc/v1.1.12/nav_g.png create mode 100644 doc/v1.1.12/nav_h.png create mode 100644 doc/v1.1.12/nav_hd.png create mode 100644 doc/v1.1.12/open.png create mode 100644 doc/v1.1.12/paf_8h.html create mode 100644 doc/v1.1.12/paf_8h_source.html create mode 100644 doc/v1.1.12/paf__err_8h_source.html create mode 100644 doc/v1.1.12/paf__match_8h.html create mode 100644 doc/v1.1.12/paf__match_8h_source.html create mode 100644 doc/v1.1.12/paf__props_8h.html create mode 100644 doc/v1.1.12/paf__props_8h_source.html create mode 100644 doc/v1.1.12/paf__value_8h.html create mode 100644 doc/v1.1.12/paf__value_8h_source.html create mode 100644 doc/v1.1.12/plus.svg create mode 100644 doc/v1.1.12/plusd.svg create mode 100644 doc/v1.1.12/search/all_0.js create mode 100644 doc/v1.1.12/search/all_1.js create mode 100644 doc/v1.1.12/search/all_2.js create mode 100644 doc/v1.1.12/search/all_3.js create mode 100644 doc/v1.1.12/search/all_4.js create mode 100644 doc/v1.1.12/search/all_5.js create mode 100644 doc/v1.1.12/search/all_6.js create mode 100644 doc/v1.1.12/search/all_7.js create mode 100644 doc/v1.1.12/search/all_8.js create mode 100644 doc/v1.1.12/search/all_9.js create mode 100644 doc/v1.1.12/search/all_a.js create mode 100644 doc/v1.1.12/search/close.svg create mode 100644 doc/v1.1.12/search/enums_0.js create mode 100644 doc/v1.1.12/search/enumvalues_0.js create mode 100644 doc/v1.1.12/search/files_0.js create mode 100644 doc/v1.1.12/search/functions_0.js create mode 100644 doc/v1.1.12/search/mag.svg create mode 100644 doc/v1.1.12/search/mag_d.svg create mode 100644 doc/v1.1.12/search/mag_sel.svg create mode 100644 doc/v1.1.12/search/mag_seld.svg create mode 100644 doc/v1.1.12/search/pages_0.js create mode 100644 doc/v1.1.12/search/pages_1.js create mode 100644 doc/v1.1.12/search/pages_2.js create mode 100644 doc/v1.1.12/search/pages_3.js create mode 100644 doc/v1.1.12/search/search.css create mode 100644 doc/v1.1.12/search/search.js create mode 100644 doc/v1.1.12/search/searchdata.js create mode 100644 doc/v1.1.12/search/typedefs_0.js create mode 100644 doc/v1.1.12/splitbar.png create mode 100644 doc/v1.1.12/splitbard.png create mode 100644 doc/v1.1.12/sync_off.png create mode 100644 doc/v1.1.12/sync_on.png create mode 100644 doc/v1.1.12/tab_a.png create mode 100644 doc/v1.1.12/tab_ad.png create mode 100644 doc/v1.1.12/tab_b.png create mode 100644 doc/v1.1.12/tab_bd.png create mode 100644 doc/v1.1.12/tab_h.png create mode 100644 doc/v1.1.12/tab_hd.png create mode 100644 doc/v1.1.12/tab_s.png create mode 100644 doc/v1.1.12/tab_sd.png create mode 100644 doc/v1.1.12/tabs.css create mode 100644 doc/v1.1.2/bc_s.png create mode 100644 doc/v1.1.2/bc_sd.png create mode 100644 doc/v1.1.2/closed.png create mode 100644 doc/v1.1.2/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.2/doc.svg create mode 100644 doc/v1.1.2/docd.svg create mode 100644 doc/v1.1.2/doxygen.css create mode 100644 doc/v1.1.2/doxygen.svg create mode 100644 doc/v1.1.2/dynsections.js create mode 100644 doc/v1.1.2/files.html create mode 100644 doc/v1.1.2/folderclosed.svg create mode 100644 doc/v1.1.2/folderclosedd.svg create mode 100644 doc/v1.1.2/folderopen.svg create mode 100644 doc/v1.1.2/folderopend.svg create mode 100644 doc/v1.1.2/globals.html create mode 100644 doc/v1.1.2/globals_enum.html create mode 100644 doc/v1.1.2/globals_eval.html create mode 100644 doc/v1.1.2/globals_func.html create mode 100644 doc/v1.1.2/globals_type.html create mode 100644 doc/v1.1.2/index.html create mode 100644 doc/v1.1.2/jquery.js create mode 100644 doc/v1.1.2/menu.js create mode 100644 doc/v1.1.2/menudata.js create mode 100644 doc/v1.1.2/minus.svg create mode 100644 doc/v1.1.2/minusd.svg create mode 100644 doc/v1.1.2/nav_f.png create mode 100644 doc/v1.1.2/nav_fd.png create mode 100644 doc/v1.1.2/nav_g.png create mode 100644 doc/v1.1.2/nav_h.png create mode 100644 doc/v1.1.2/nav_hd.png create mode 100644 doc/v1.1.2/open.png create mode 100644 doc/v1.1.2/paf_8h.html create mode 100644 doc/v1.1.2/paf_8h_source.html create mode 100644 doc/v1.1.2/paf__err_8h_source.html create mode 100644 doc/v1.1.2/paf__match_8h.html create mode 100644 doc/v1.1.2/paf__match_8h_source.html create mode 100644 doc/v1.1.2/paf__props_8h.html create mode 100644 doc/v1.1.2/paf__props_8h_source.html create mode 100644 doc/v1.1.2/paf__value_8h.html create mode 100644 doc/v1.1.2/paf__value_8h_source.html create mode 100644 doc/v1.1.2/plus.svg create mode 100644 doc/v1.1.2/plusd.svg create mode 100644 doc/v1.1.2/search/all_0.js create mode 100644 doc/v1.1.2/search/all_1.js create mode 100644 doc/v1.1.2/search/all_2.js create mode 100644 doc/v1.1.2/search/all_3.js create mode 100644 doc/v1.1.2/search/all_4.js create mode 100644 doc/v1.1.2/search/all_5.js create mode 100644 doc/v1.1.2/search/all_6.js create mode 100644 doc/v1.1.2/search/all_7.js create mode 100644 doc/v1.1.2/search/all_8.js create mode 100644 doc/v1.1.2/search/all_9.js create mode 100644 doc/v1.1.2/search/all_a.js create mode 100644 doc/v1.1.2/search/close.svg create mode 100644 doc/v1.1.2/search/enums_0.js create mode 100644 doc/v1.1.2/search/enumvalues_0.js create mode 100644 doc/v1.1.2/search/files_0.js create mode 100644 doc/v1.1.2/search/functions_0.js create mode 100644 doc/v1.1.2/search/mag.svg create mode 100644 doc/v1.1.2/search/mag_d.svg create mode 100644 doc/v1.1.2/search/mag_sel.svg create mode 100644 doc/v1.1.2/search/mag_seld.svg create mode 100644 doc/v1.1.2/search/pages_0.js create mode 100644 doc/v1.1.2/search/pages_1.js create mode 100644 doc/v1.1.2/search/pages_2.js create mode 100644 doc/v1.1.2/search/pages_3.js create mode 100644 doc/v1.1.2/search/search.css create mode 100644 doc/v1.1.2/search/search.js create mode 100644 doc/v1.1.2/search/searchdata.js create mode 100644 doc/v1.1.2/search/typedefs_0.js create mode 100644 doc/v1.1.2/splitbar.png create mode 100644 doc/v1.1.2/splitbard.png create mode 100644 doc/v1.1.2/sync_off.png create mode 100644 doc/v1.1.2/sync_on.png create mode 100644 doc/v1.1.2/tab_a.png create mode 100644 doc/v1.1.2/tab_ad.png create mode 100644 doc/v1.1.2/tab_b.png create mode 100644 doc/v1.1.2/tab_bd.png create mode 100644 doc/v1.1.2/tab_h.png create mode 100644 doc/v1.1.2/tab_hd.png create mode 100644 doc/v1.1.2/tab_s.png create mode 100644 doc/v1.1.2/tab_sd.png create mode 100644 doc/v1.1.2/tabs.css create mode 100644 doc/v1.1.3/bc_s.png create mode 100644 doc/v1.1.3/bc_sd.png create mode 100644 doc/v1.1.3/closed.png create mode 100644 doc/v1.1.3/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.3/doc.svg create mode 100644 doc/v1.1.3/docd.svg create mode 100644 doc/v1.1.3/doxygen.css create mode 100644 doc/v1.1.3/doxygen.svg create mode 100644 doc/v1.1.3/dynsections.js create mode 100644 doc/v1.1.3/files.html create mode 100644 doc/v1.1.3/folderclosed.svg create mode 100644 doc/v1.1.3/folderclosedd.svg create mode 100644 doc/v1.1.3/folderopen.svg create mode 100644 doc/v1.1.3/folderopend.svg create mode 100644 doc/v1.1.3/globals.html create mode 100644 doc/v1.1.3/globals_enum.html create mode 100644 doc/v1.1.3/globals_eval.html create mode 100644 doc/v1.1.3/globals_func.html create mode 100644 doc/v1.1.3/globals_type.html create mode 100644 doc/v1.1.3/index.html create mode 100644 doc/v1.1.3/jquery.js create mode 100644 doc/v1.1.3/menu.js create mode 100644 doc/v1.1.3/menudata.js create mode 100644 doc/v1.1.3/minus.svg create mode 100644 doc/v1.1.3/minusd.svg create mode 100644 doc/v1.1.3/nav_f.png create mode 100644 doc/v1.1.3/nav_fd.png create mode 100644 doc/v1.1.3/nav_g.png create mode 100644 doc/v1.1.3/nav_h.png create mode 100644 doc/v1.1.3/nav_hd.png create mode 100644 doc/v1.1.3/open.png create mode 100644 doc/v1.1.3/paf_8h.html create mode 100644 doc/v1.1.3/paf_8h_source.html create mode 100644 doc/v1.1.3/paf__err_8h_source.html create mode 100644 doc/v1.1.3/paf__match_8h.html create mode 100644 doc/v1.1.3/paf__match_8h_source.html create mode 100644 doc/v1.1.3/paf__props_8h.html create mode 100644 doc/v1.1.3/paf__props_8h_source.html create mode 100644 doc/v1.1.3/paf__value_8h.html create mode 100644 doc/v1.1.3/paf__value_8h_source.html create mode 100644 doc/v1.1.3/plus.svg create mode 100644 doc/v1.1.3/plusd.svg create mode 100644 doc/v1.1.3/search/all_0.js create mode 100644 doc/v1.1.3/search/all_1.js create mode 100644 doc/v1.1.3/search/all_2.js create mode 100644 doc/v1.1.3/search/all_3.js create mode 100644 doc/v1.1.3/search/all_4.js create mode 100644 doc/v1.1.3/search/all_5.js create mode 100644 doc/v1.1.3/search/all_6.js create mode 100644 doc/v1.1.3/search/all_7.js create mode 100644 doc/v1.1.3/search/all_8.js create mode 100644 doc/v1.1.3/search/all_9.js create mode 100644 doc/v1.1.3/search/all_a.js create mode 100644 doc/v1.1.3/search/close.svg create mode 100644 doc/v1.1.3/search/enums_0.js create mode 100644 doc/v1.1.3/search/enumvalues_0.js create mode 100644 doc/v1.1.3/search/files_0.js create mode 100644 doc/v1.1.3/search/functions_0.js create mode 100644 doc/v1.1.3/search/mag.svg create mode 100644 doc/v1.1.3/search/mag_d.svg create mode 100644 doc/v1.1.3/search/mag_sel.svg create mode 100644 doc/v1.1.3/search/mag_seld.svg create mode 100644 doc/v1.1.3/search/pages_0.js create mode 100644 doc/v1.1.3/search/pages_1.js create mode 100644 doc/v1.1.3/search/pages_2.js create mode 100644 doc/v1.1.3/search/pages_3.js create mode 100644 doc/v1.1.3/search/search.css create mode 100644 doc/v1.1.3/search/search.js create mode 100644 doc/v1.1.3/search/searchdata.js create mode 100644 doc/v1.1.3/search/typedefs_0.js create mode 100644 doc/v1.1.3/splitbar.png create mode 100644 doc/v1.1.3/splitbard.png create mode 100644 doc/v1.1.3/sync_off.png create mode 100644 doc/v1.1.3/sync_on.png create mode 100644 doc/v1.1.3/tab_a.png create mode 100644 doc/v1.1.3/tab_ad.png create mode 100644 doc/v1.1.3/tab_b.png create mode 100644 doc/v1.1.3/tab_bd.png create mode 100644 doc/v1.1.3/tab_h.png create mode 100644 doc/v1.1.3/tab_hd.png create mode 100644 doc/v1.1.3/tab_s.png create mode 100644 doc/v1.1.3/tab_sd.png create mode 100644 doc/v1.1.3/tabs.css create mode 100644 doc/v1.1.4/bc_s.png create mode 100644 doc/v1.1.4/bc_sd.png create mode 100644 doc/v1.1.4/closed.png create mode 100644 doc/v1.1.4/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.4/doc.svg create mode 100644 doc/v1.1.4/docd.svg create mode 100644 doc/v1.1.4/doxygen.css create mode 100644 doc/v1.1.4/doxygen.svg create mode 100644 doc/v1.1.4/dynsections.js create mode 100644 doc/v1.1.4/files.html create mode 100644 doc/v1.1.4/folderclosed.svg create mode 100644 doc/v1.1.4/folderclosedd.svg create mode 100644 doc/v1.1.4/folderopen.svg create mode 100644 doc/v1.1.4/folderopend.svg create mode 100644 doc/v1.1.4/globals.html create mode 100644 doc/v1.1.4/globals_enum.html create mode 100644 doc/v1.1.4/globals_eval.html create mode 100644 doc/v1.1.4/globals_func.html create mode 100644 doc/v1.1.4/globals_type.html create mode 100644 doc/v1.1.4/index.html create mode 100644 doc/v1.1.4/jquery.js create mode 100644 doc/v1.1.4/menu.js create mode 100644 doc/v1.1.4/menudata.js create mode 100644 doc/v1.1.4/minus.svg create mode 100644 doc/v1.1.4/minusd.svg create mode 100644 doc/v1.1.4/nav_f.png create mode 100644 doc/v1.1.4/nav_fd.png create mode 100644 doc/v1.1.4/nav_g.png create mode 100644 doc/v1.1.4/nav_h.png create mode 100644 doc/v1.1.4/nav_hd.png create mode 100644 doc/v1.1.4/open.png create mode 100644 doc/v1.1.4/paf_8h.html create mode 100644 doc/v1.1.4/paf_8h_source.html create mode 100644 doc/v1.1.4/paf__err_8h_source.html create mode 100644 doc/v1.1.4/paf__match_8h.html create mode 100644 doc/v1.1.4/paf__match_8h_source.html create mode 100644 doc/v1.1.4/paf__props_8h.html create mode 100644 doc/v1.1.4/paf__props_8h_source.html create mode 100644 doc/v1.1.4/paf__value_8h.html create mode 100644 doc/v1.1.4/paf__value_8h_source.html create mode 100644 doc/v1.1.4/plus.svg create mode 100644 doc/v1.1.4/plusd.svg create mode 100644 doc/v1.1.4/search/all_0.js create mode 100644 doc/v1.1.4/search/all_1.js create mode 100644 doc/v1.1.4/search/all_2.js create mode 100644 doc/v1.1.4/search/all_3.js create mode 100644 doc/v1.1.4/search/all_4.js create mode 100644 doc/v1.1.4/search/all_5.js create mode 100644 doc/v1.1.4/search/all_6.js create mode 100644 doc/v1.1.4/search/all_7.js create mode 100644 doc/v1.1.4/search/all_8.js create mode 100644 doc/v1.1.4/search/all_9.js create mode 100644 doc/v1.1.4/search/all_a.js create mode 100644 doc/v1.1.4/search/close.svg create mode 100644 doc/v1.1.4/search/enums_0.js create mode 100644 doc/v1.1.4/search/enumvalues_0.js create mode 100644 doc/v1.1.4/search/files_0.js create mode 100644 doc/v1.1.4/search/functions_0.js create mode 100644 doc/v1.1.4/search/mag.svg create mode 100644 doc/v1.1.4/search/mag_d.svg create mode 100644 doc/v1.1.4/search/mag_sel.svg create mode 100644 doc/v1.1.4/search/mag_seld.svg create mode 100644 doc/v1.1.4/search/pages_0.js create mode 100644 doc/v1.1.4/search/pages_1.js create mode 100644 doc/v1.1.4/search/pages_2.js create mode 100644 doc/v1.1.4/search/pages_3.js create mode 100644 doc/v1.1.4/search/search.css create mode 100644 doc/v1.1.4/search/search.js create mode 100644 doc/v1.1.4/search/searchdata.js create mode 100644 doc/v1.1.4/search/typedefs_0.js create mode 100644 doc/v1.1.4/splitbar.png create mode 100644 doc/v1.1.4/splitbard.png create mode 100644 doc/v1.1.4/sync_off.png create mode 100644 doc/v1.1.4/sync_on.png create mode 100644 doc/v1.1.4/tab_a.png create mode 100644 doc/v1.1.4/tab_ad.png create mode 100644 doc/v1.1.4/tab_b.png create mode 100644 doc/v1.1.4/tab_bd.png create mode 100644 doc/v1.1.4/tab_h.png create mode 100644 doc/v1.1.4/tab_hd.png create mode 100644 doc/v1.1.4/tab_s.png create mode 100644 doc/v1.1.4/tab_sd.png create mode 100644 doc/v1.1.4/tabs.css create mode 100644 doc/v1.1.5/bc_s.png create mode 100644 doc/v1.1.5/bc_sd.png create mode 100644 doc/v1.1.5/closed.png create mode 100644 doc/v1.1.5/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.5/doc.svg create mode 100644 doc/v1.1.5/docd.svg create mode 100644 doc/v1.1.5/doxygen.css create mode 100644 doc/v1.1.5/doxygen.svg create mode 100644 doc/v1.1.5/dynsections.js create mode 100644 doc/v1.1.5/files.html create mode 100644 doc/v1.1.5/folderclosed.svg create mode 100644 doc/v1.1.5/folderclosedd.svg create mode 100644 doc/v1.1.5/folderopen.svg create mode 100644 doc/v1.1.5/folderopend.svg create mode 100644 doc/v1.1.5/globals.html create mode 100644 doc/v1.1.5/globals_enum.html create mode 100644 doc/v1.1.5/globals_eval.html create mode 100644 doc/v1.1.5/globals_func.html create mode 100644 doc/v1.1.5/globals_type.html create mode 100644 doc/v1.1.5/index.html create mode 100644 doc/v1.1.5/jquery.js create mode 100644 doc/v1.1.5/menu.js create mode 100644 doc/v1.1.5/menudata.js create mode 100644 doc/v1.1.5/minus.svg create mode 100644 doc/v1.1.5/minusd.svg create mode 100644 doc/v1.1.5/nav_f.png create mode 100644 doc/v1.1.5/nav_fd.png create mode 100644 doc/v1.1.5/nav_g.png create mode 100644 doc/v1.1.5/nav_h.png create mode 100644 doc/v1.1.5/nav_hd.png create mode 100644 doc/v1.1.5/open.png create mode 100644 doc/v1.1.5/paf_8h.html create mode 100644 doc/v1.1.5/paf_8h_source.html create mode 100644 doc/v1.1.5/paf__err_8h_source.html create mode 100644 doc/v1.1.5/paf__match_8h.html create mode 100644 doc/v1.1.5/paf__match_8h_source.html create mode 100644 doc/v1.1.5/paf__props_8h.html create mode 100644 doc/v1.1.5/paf__props_8h_source.html create mode 100644 doc/v1.1.5/paf__value_8h.html create mode 100644 doc/v1.1.5/paf__value_8h_source.html create mode 100644 doc/v1.1.5/plus.svg create mode 100644 doc/v1.1.5/plusd.svg create mode 100644 doc/v1.1.5/search/all_0.js create mode 100644 doc/v1.1.5/search/all_1.js create mode 100644 doc/v1.1.5/search/all_2.js create mode 100644 doc/v1.1.5/search/all_3.js create mode 100644 doc/v1.1.5/search/all_4.js create mode 100644 doc/v1.1.5/search/all_5.js create mode 100644 doc/v1.1.5/search/all_6.js create mode 100644 doc/v1.1.5/search/all_7.js create mode 100644 doc/v1.1.5/search/all_8.js create mode 100644 doc/v1.1.5/search/all_9.js create mode 100644 doc/v1.1.5/search/all_a.js create mode 100644 doc/v1.1.5/search/close.svg create mode 100644 doc/v1.1.5/search/enums_0.js create mode 100644 doc/v1.1.5/search/enumvalues_0.js create mode 100644 doc/v1.1.5/search/files_0.js create mode 100644 doc/v1.1.5/search/functions_0.js create mode 100644 doc/v1.1.5/search/mag.svg create mode 100644 doc/v1.1.5/search/mag_d.svg create mode 100644 doc/v1.1.5/search/mag_sel.svg create mode 100644 doc/v1.1.5/search/mag_seld.svg create mode 100644 doc/v1.1.5/search/pages_0.js create mode 100644 doc/v1.1.5/search/pages_1.js create mode 100644 doc/v1.1.5/search/pages_2.js create mode 100644 doc/v1.1.5/search/pages_3.js create mode 100644 doc/v1.1.5/search/search.css create mode 100644 doc/v1.1.5/search/search.js create mode 100644 doc/v1.1.5/search/searchdata.js create mode 100644 doc/v1.1.5/search/typedefs_0.js create mode 100644 doc/v1.1.5/splitbar.png create mode 100644 doc/v1.1.5/splitbard.png create mode 100644 doc/v1.1.5/sync_off.png create mode 100644 doc/v1.1.5/sync_on.png create mode 100644 doc/v1.1.5/tab_a.png create mode 100644 doc/v1.1.5/tab_ad.png create mode 100644 doc/v1.1.5/tab_b.png create mode 100644 doc/v1.1.5/tab_bd.png create mode 100644 doc/v1.1.5/tab_h.png create mode 100644 doc/v1.1.5/tab_hd.png create mode 100644 doc/v1.1.5/tab_s.png create mode 100644 doc/v1.1.5/tab_sd.png create mode 100644 doc/v1.1.5/tabs.css create mode 100644 doc/v1.1.6/bc_s.png create mode 100644 doc/v1.1.6/bc_sd.png create mode 100644 doc/v1.1.6/closed.png create mode 100644 doc/v1.1.6/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.6/doc.svg create mode 100644 doc/v1.1.6/docd.svg create mode 100644 doc/v1.1.6/doxygen.css create mode 100644 doc/v1.1.6/doxygen.svg create mode 100644 doc/v1.1.6/dynsections.js create mode 100644 doc/v1.1.6/files.html create mode 100644 doc/v1.1.6/folderclosed.svg create mode 100644 doc/v1.1.6/folderclosedd.svg create mode 100644 doc/v1.1.6/folderopen.svg create mode 100644 doc/v1.1.6/folderopend.svg create mode 100644 doc/v1.1.6/globals.html create mode 100644 doc/v1.1.6/globals_enum.html create mode 100644 doc/v1.1.6/globals_eval.html create mode 100644 doc/v1.1.6/globals_func.html create mode 100644 doc/v1.1.6/globals_type.html create mode 100644 doc/v1.1.6/index.html create mode 100644 doc/v1.1.6/jquery.js create mode 100644 doc/v1.1.6/menu.js create mode 100644 doc/v1.1.6/menudata.js create mode 100644 doc/v1.1.6/minus.svg create mode 100644 doc/v1.1.6/minusd.svg create mode 100644 doc/v1.1.6/nav_f.png create mode 100644 doc/v1.1.6/nav_fd.png create mode 100644 doc/v1.1.6/nav_g.png create mode 100644 doc/v1.1.6/nav_h.png create mode 100644 doc/v1.1.6/nav_hd.png create mode 100644 doc/v1.1.6/open.png create mode 100644 doc/v1.1.6/paf_8h.html create mode 100644 doc/v1.1.6/paf_8h_source.html create mode 100644 doc/v1.1.6/paf__err_8h_source.html create mode 100644 doc/v1.1.6/paf__match_8h.html create mode 100644 doc/v1.1.6/paf__match_8h_source.html create mode 100644 doc/v1.1.6/paf__props_8h.html create mode 100644 doc/v1.1.6/paf__props_8h_source.html create mode 100644 doc/v1.1.6/paf__value_8h.html create mode 100644 doc/v1.1.6/paf__value_8h_source.html create mode 100644 doc/v1.1.6/plus.svg create mode 100644 doc/v1.1.6/plusd.svg create mode 100644 doc/v1.1.6/search/all_0.js create mode 100644 doc/v1.1.6/search/all_1.js create mode 100644 doc/v1.1.6/search/all_2.js create mode 100644 doc/v1.1.6/search/all_3.js create mode 100644 doc/v1.1.6/search/all_4.js create mode 100644 doc/v1.1.6/search/all_5.js create mode 100644 doc/v1.1.6/search/all_6.js create mode 100644 doc/v1.1.6/search/all_7.js create mode 100644 doc/v1.1.6/search/all_8.js create mode 100644 doc/v1.1.6/search/all_9.js create mode 100644 doc/v1.1.6/search/all_a.js create mode 100644 doc/v1.1.6/search/close.svg create mode 100644 doc/v1.1.6/search/enums_0.js create mode 100644 doc/v1.1.6/search/enumvalues_0.js create mode 100644 doc/v1.1.6/search/files_0.js create mode 100644 doc/v1.1.6/search/functions_0.js create mode 100644 doc/v1.1.6/search/mag.svg create mode 100644 doc/v1.1.6/search/mag_d.svg create mode 100644 doc/v1.1.6/search/mag_sel.svg create mode 100644 doc/v1.1.6/search/mag_seld.svg create mode 100644 doc/v1.1.6/search/pages_0.js create mode 100644 doc/v1.1.6/search/pages_1.js create mode 100644 doc/v1.1.6/search/pages_2.js create mode 100644 doc/v1.1.6/search/pages_3.js create mode 100644 doc/v1.1.6/search/search.css create mode 100644 doc/v1.1.6/search/search.js create mode 100644 doc/v1.1.6/search/searchdata.js create mode 100644 doc/v1.1.6/search/typedefs_0.js create mode 100644 doc/v1.1.6/splitbar.png create mode 100644 doc/v1.1.6/splitbard.png create mode 100644 doc/v1.1.6/sync_off.png create mode 100644 doc/v1.1.6/sync_on.png create mode 100644 doc/v1.1.6/tab_a.png create mode 100644 doc/v1.1.6/tab_ad.png create mode 100644 doc/v1.1.6/tab_b.png create mode 100644 doc/v1.1.6/tab_bd.png create mode 100644 doc/v1.1.6/tab_h.png create mode 100644 doc/v1.1.6/tab_hd.png create mode 100644 doc/v1.1.6/tab_s.png create mode 100644 doc/v1.1.6/tab_sd.png create mode 100644 doc/v1.1.6/tabs.css create mode 100644 doc/v1.1.7/bc_s.png create mode 100644 doc/v1.1.7/bc_sd.png create mode 100644 doc/v1.1.7/closed.png create mode 100644 doc/v1.1.7/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.7/doc.svg create mode 100644 doc/v1.1.7/docd.svg create mode 100644 doc/v1.1.7/doxygen.css create mode 100644 doc/v1.1.7/doxygen.svg create mode 100644 doc/v1.1.7/dynsections.js create mode 100644 doc/v1.1.7/files.html create mode 100644 doc/v1.1.7/folderclosed.svg create mode 100644 doc/v1.1.7/folderclosedd.svg create mode 100644 doc/v1.1.7/folderopen.svg create mode 100644 doc/v1.1.7/folderopend.svg create mode 100644 doc/v1.1.7/globals.html create mode 100644 doc/v1.1.7/globals_enum.html create mode 100644 doc/v1.1.7/globals_eval.html create mode 100644 doc/v1.1.7/globals_func.html create mode 100644 doc/v1.1.7/globals_type.html create mode 100644 doc/v1.1.7/index.html create mode 100644 doc/v1.1.7/jquery.js create mode 100644 doc/v1.1.7/menu.js create mode 100644 doc/v1.1.7/menudata.js create mode 100644 doc/v1.1.7/minus.svg create mode 100644 doc/v1.1.7/minusd.svg create mode 100644 doc/v1.1.7/nav_f.png create mode 100644 doc/v1.1.7/nav_fd.png create mode 100644 doc/v1.1.7/nav_g.png create mode 100644 doc/v1.1.7/nav_h.png create mode 100644 doc/v1.1.7/nav_hd.png create mode 100644 doc/v1.1.7/open.png create mode 100644 doc/v1.1.7/paf_8h.html create mode 100644 doc/v1.1.7/paf_8h_source.html create mode 100644 doc/v1.1.7/paf__err_8h_source.html create mode 100644 doc/v1.1.7/paf__match_8h.html create mode 100644 doc/v1.1.7/paf__match_8h_source.html create mode 100644 doc/v1.1.7/paf__props_8h.html create mode 100644 doc/v1.1.7/paf__props_8h_source.html create mode 100644 doc/v1.1.7/paf__value_8h.html create mode 100644 doc/v1.1.7/paf__value_8h_source.html create mode 100644 doc/v1.1.7/plus.svg create mode 100644 doc/v1.1.7/plusd.svg create mode 100644 doc/v1.1.7/search/all_0.js create mode 100644 doc/v1.1.7/search/all_1.js create mode 100644 doc/v1.1.7/search/all_2.js create mode 100644 doc/v1.1.7/search/all_3.js create mode 100644 doc/v1.1.7/search/all_4.js create mode 100644 doc/v1.1.7/search/all_5.js create mode 100644 doc/v1.1.7/search/all_6.js create mode 100644 doc/v1.1.7/search/all_7.js create mode 100644 doc/v1.1.7/search/all_8.js create mode 100644 doc/v1.1.7/search/all_9.js create mode 100644 doc/v1.1.7/search/all_a.js create mode 100644 doc/v1.1.7/search/close.svg create mode 100644 doc/v1.1.7/search/enums_0.js create mode 100644 doc/v1.1.7/search/enumvalues_0.js create mode 100644 doc/v1.1.7/search/files_0.js create mode 100644 doc/v1.1.7/search/functions_0.js create mode 100644 doc/v1.1.7/search/mag.svg create mode 100644 doc/v1.1.7/search/mag_d.svg create mode 100644 doc/v1.1.7/search/mag_sel.svg create mode 100644 doc/v1.1.7/search/mag_seld.svg create mode 100644 doc/v1.1.7/search/pages_0.js create mode 100644 doc/v1.1.7/search/pages_1.js create mode 100644 doc/v1.1.7/search/pages_2.js create mode 100644 doc/v1.1.7/search/pages_3.js create mode 100644 doc/v1.1.7/search/search.css create mode 100644 doc/v1.1.7/search/search.js create mode 100644 doc/v1.1.7/search/searchdata.js create mode 100644 doc/v1.1.7/search/typedefs_0.js create mode 100644 doc/v1.1.7/splitbar.png create mode 100644 doc/v1.1.7/splitbard.png create mode 100644 doc/v1.1.7/sync_off.png create mode 100644 doc/v1.1.7/sync_on.png create mode 100644 doc/v1.1.7/tab_a.png create mode 100644 doc/v1.1.7/tab_ad.png create mode 100644 doc/v1.1.7/tab_b.png create mode 100644 doc/v1.1.7/tab_bd.png create mode 100644 doc/v1.1.7/tab_h.png create mode 100644 doc/v1.1.7/tab_hd.png create mode 100644 doc/v1.1.7/tab_s.png create mode 100644 doc/v1.1.7/tab_sd.png create mode 100644 doc/v1.1.7/tabs.css create mode 100644 doc/v1.1.8/bc_s.png create mode 100644 doc/v1.1.8/bc_sd.png create mode 100644 doc/v1.1.8/closed.png create mode 100644 doc/v1.1.8/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.8/doc.svg create mode 100644 doc/v1.1.8/docd.svg create mode 100644 doc/v1.1.8/doxygen.css create mode 100644 doc/v1.1.8/doxygen.svg create mode 100644 doc/v1.1.8/dynsections.js create mode 100644 doc/v1.1.8/files.html create mode 100644 doc/v1.1.8/folderclosed.svg create mode 100644 doc/v1.1.8/folderclosedd.svg create mode 100644 doc/v1.1.8/folderopen.svg create mode 100644 doc/v1.1.8/folderopend.svg create mode 100644 doc/v1.1.8/globals.html create mode 100644 doc/v1.1.8/globals_enum.html create mode 100644 doc/v1.1.8/globals_eval.html create mode 100644 doc/v1.1.8/globals_func.html create mode 100644 doc/v1.1.8/globals_type.html create mode 100644 doc/v1.1.8/index.html create mode 100644 doc/v1.1.8/jquery.js create mode 100644 doc/v1.1.8/menu.js create mode 100644 doc/v1.1.8/menudata.js create mode 100644 doc/v1.1.8/minus.svg create mode 100644 doc/v1.1.8/minusd.svg create mode 100644 doc/v1.1.8/nav_f.png create mode 100644 doc/v1.1.8/nav_fd.png create mode 100644 doc/v1.1.8/nav_g.png create mode 100644 doc/v1.1.8/nav_h.png create mode 100644 doc/v1.1.8/nav_hd.png create mode 100644 doc/v1.1.8/open.png create mode 100644 doc/v1.1.8/paf_8h.html create mode 100644 doc/v1.1.8/paf_8h_source.html create mode 100644 doc/v1.1.8/paf__err_8h_source.html create mode 100644 doc/v1.1.8/paf__match_8h.html create mode 100644 doc/v1.1.8/paf__match_8h_source.html create mode 100644 doc/v1.1.8/paf__props_8h.html create mode 100644 doc/v1.1.8/paf__props_8h_source.html create mode 100644 doc/v1.1.8/paf__value_8h.html create mode 100644 doc/v1.1.8/paf__value_8h_source.html create mode 100644 doc/v1.1.8/plus.svg create mode 100644 doc/v1.1.8/plusd.svg create mode 100644 doc/v1.1.8/search/all_0.js create mode 100644 doc/v1.1.8/search/all_1.js create mode 100644 doc/v1.1.8/search/all_2.js create mode 100644 doc/v1.1.8/search/all_3.js create mode 100644 doc/v1.1.8/search/all_4.js create mode 100644 doc/v1.1.8/search/all_5.js create mode 100644 doc/v1.1.8/search/all_6.js create mode 100644 doc/v1.1.8/search/all_7.js create mode 100644 doc/v1.1.8/search/all_8.js create mode 100644 doc/v1.1.8/search/all_9.js create mode 100644 doc/v1.1.8/search/all_a.js create mode 100644 doc/v1.1.8/search/close.svg create mode 100644 doc/v1.1.8/search/enums_0.js create mode 100644 doc/v1.1.8/search/enumvalues_0.js create mode 100644 doc/v1.1.8/search/files_0.js create mode 100644 doc/v1.1.8/search/functions_0.js create mode 100644 doc/v1.1.8/search/mag.svg create mode 100644 doc/v1.1.8/search/mag_d.svg create mode 100644 doc/v1.1.8/search/mag_sel.svg create mode 100644 doc/v1.1.8/search/mag_seld.svg create mode 100644 doc/v1.1.8/search/pages_0.js create mode 100644 doc/v1.1.8/search/pages_1.js create mode 100644 doc/v1.1.8/search/pages_2.js create mode 100644 doc/v1.1.8/search/pages_3.js create mode 100644 doc/v1.1.8/search/search.css create mode 100644 doc/v1.1.8/search/search.js create mode 100644 doc/v1.1.8/search/searchdata.js create mode 100644 doc/v1.1.8/search/typedefs_0.js create mode 100644 doc/v1.1.8/splitbar.png create mode 100644 doc/v1.1.8/splitbard.png create mode 100644 doc/v1.1.8/sync_off.png create mode 100644 doc/v1.1.8/sync_on.png create mode 100644 doc/v1.1.8/tab_a.png create mode 100644 doc/v1.1.8/tab_ad.png create mode 100644 doc/v1.1.8/tab_b.png create mode 100644 doc/v1.1.8/tab_bd.png create mode 100644 doc/v1.1.8/tab_h.png create mode 100644 doc/v1.1.8/tab_hd.png create mode 100644 doc/v1.1.8/tab_s.png create mode 100644 doc/v1.1.8/tab_sd.png create mode 100644 doc/v1.1.8/tabs.css create mode 100644 doc/v1.1.9/bc_s.png create mode 100644 doc/v1.1.9/bc_sd.png create mode 100644 doc/v1.1.9/closed.png create mode 100644 doc/v1.1.9/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/v1.1.9/doc.svg create mode 100644 doc/v1.1.9/docd.svg create mode 100644 doc/v1.1.9/doxygen.css create mode 100644 doc/v1.1.9/doxygen.svg create mode 100644 doc/v1.1.9/dynsections.js create mode 100644 doc/v1.1.9/files.html create mode 100644 doc/v1.1.9/folderclosed.svg create mode 100644 doc/v1.1.9/folderclosedd.svg create mode 100644 doc/v1.1.9/folderopen.svg create mode 100644 doc/v1.1.9/folderopend.svg create mode 100644 doc/v1.1.9/globals.html create mode 100644 doc/v1.1.9/globals_enum.html create mode 100644 doc/v1.1.9/globals_eval.html create mode 100644 doc/v1.1.9/globals_func.html create mode 100644 doc/v1.1.9/globals_type.html create mode 100644 doc/v1.1.9/index.html create mode 100644 doc/v1.1.9/jquery.js create mode 100644 doc/v1.1.9/menu.js create mode 100644 doc/v1.1.9/menudata.js create mode 100644 doc/v1.1.9/minus.svg create mode 100644 doc/v1.1.9/minusd.svg create mode 100644 doc/v1.1.9/nav_f.png create mode 100644 doc/v1.1.9/nav_fd.png create mode 100644 doc/v1.1.9/nav_g.png create mode 100644 doc/v1.1.9/nav_h.png create mode 100644 doc/v1.1.9/nav_hd.png create mode 100644 doc/v1.1.9/open.png create mode 100644 doc/v1.1.9/paf_8h.html create mode 100644 doc/v1.1.9/paf_8h_source.html create mode 100644 doc/v1.1.9/paf__err_8h_source.html create mode 100644 doc/v1.1.9/paf__match_8h.html create mode 100644 doc/v1.1.9/paf__match_8h_source.html create mode 100644 doc/v1.1.9/paf__props_8h.html create mode 100644 doc/v1.1.9/paf__props_8h_source.html create mode 100644 doc/v1.1.9/paf__value_8h.html create mode 100644 doc/v1.1.9/paf__value_8h_source.html create mode 100644 doc/v1.1.9/plus.svg create mode 100644 doc/v1.1.9/plusd.svg create mode 100644 doc/v1.1.9/search/all_0.js create mode 100644 doc/v1.1.9/search/all_1.js create mode 100644 doc/v1.1.9/search/all_2.js create mode 100644 doc/v1.1.9/search/all_3.js create mode 100644 doc/v1.1.9/search/all_4.js create mode 100644 doc/v1.1.9/search/all_5.js create mode 100644 doc/v1.1.9/search/all_6.js create mode 100644 doc/v1.1.9/search/all_7.js create mode 100644 doc/v1.1.9/search/all_8.js create mode 100644 doc/v1.1.9/search/all_9.js create mode 100644 doc/v1.1.9/search/all_a.js create mode 100644 doc/v1.1.9/search/close.svg create mode 100644 doc/v1.1.9/search/enums_0.js create mode 100644 doc/v1.1.9/search/enumvalues_0.js create mode 100644 doc/v1.1.9/search/files_0.js create mode 100644 doc/v1.1.9/search/functions_0.js create mode 100644 doc/v1.1.9/search/mag.svg create mode 100644 doc/v1.1.9/search/mag_d.svg create mode 100644 doc/v1.1.9/search/mag_sel.svg create mode 100644 doc/v1.1.9/search/mag_seld.svg create mode 100644 doc/v1.1.9/search/pages_0.js create mode 100644 doc/v1.1.9/search/pages_1.js create mode 100644 doc/v1.1.9/search/pages_2.js create mode 100644 doc/v1.1.9/search/pages_3.js create mode 100644 doc/v1.1.9/search/search.css create mode 100644 doc/v1.1.9/search/search.js create mode 100644 doc/v1.1.9/search/searchdata.js create mode 100644 doc/v1.1.9/search/typedefs_0.js create mode 100644 doc/v1.1.9/splitbar.png create mode 100644 doc/v1.1.9/splitbard.png create mode 100644 doc/v1.1.9/sync_off.png create mode 100644 doc/v1.1.9/sync_on.png create mode 100644 doc/v1.1.9/tab_a.png create mode 100644 doc/v1.1.9/tab_ad.png create mode 100644 doc/v1.1.9/tab_b.png create mode 100644 doc/v1.1.9/tab_bd.png create mode 100644 doc/v1.1.9/tab_h.png create mode 100644 doc/v1.1.9/tab_hd.png create mode 100644 doc/v1.1.9/tab_s.png create mode 100644 doc/v1.1.9/tab_sd.png create mode 100644 doc/v1.1.9/tabs.css diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/api/0.0/bc_s.png b/api/0.0/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/api/0.0/bc_sd.png b/api/0.0/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/api/0.0/closed.png b/api/0.0/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/api/0.0/dir_d44c64559bbebec7f509842c48db8b23.html b/api/0.0/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..cf60638 --- /dev/null +++ b/api/0.0/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
libpaf 1.0.1 +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
include Directory Reference
+
+
+ + + + + + + + + + + + + + + + +

+Files

 paf.h
 Core Pathfinder Client Library API.
 
 paf_err.h
 
 paf_match.h
 Pathfinder Client Library's Subscription Match-related Data Structure.
 
 paf_props.h
 Pathfinder Service Properties API.
 
 paf_value.h
 Pathfinder Property Value API.
 
+
+ + + + diff --git a/api/0.0/doc.svg b/api/0.0/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/api/0.0/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api/0.0/docd.svg b/api/0.0/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/api/0.0/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api/0.0/doxygen.css b/api/0.0/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/api/0.0/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/api/0.0/doxygen.svg b/api/0.0/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/api/0.0/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/0.0/dynsections.js b/api/0.0/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/api/0.0/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/api/0.0/files.html b/api/0.0/files.html new file mode 100644 index 0000000..aca664b --- /dev/null +++ b/api/0.0/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
+
+ + + + + + +
+
libpaf 1.0.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12]
+ + + + + + +
  include
 paf.hCore Pathfinder Client Library API
 paf_err.h
 paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
 paf_props.hPathfinder Service Properties API
 paf_value.hPathfinder Property Value API
+
+
+ + + + diff --git a/api/0.0/folderclosed.svg b/api/0.0/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/api/0.0/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/api/0.0/folderclosedd.svg b/api/0.0/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/api/0.0/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/api/0.0/folderopen.svg b/api/0.0/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/api/0.0/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/api/0.0/folderopend.svg b/api/0.0/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/api/0.0/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api/0.0/globals.html b/api/0.0/globals.html new file mode 100644 index 0000000..f969720 --- /dev/null +++ b/api/0.0/globals.html @@ -0,0 +1,120 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
+
+ + + + + + +
+
libpaf 1.0.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- p -

+
+ + + + diff --git a/api/0.0/globals_enum.html b/api/0.0/globals_enum.html new file mode 100644 index 0000000..f02307b --- /dev/null +++ b/api/0.0/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
+
+ + + + + + +
+
libpaf 1.0.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented enums with links to the documentation:
+
+ + + + diff --git a/api/0.0/globals_eval.html b/api/0.0/globals_eval.html new file mode 100644 index 0000000..1145954 --- /dev/null +++ b/api/0.0/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
+
+ + + + + + +
+
libpaf 1.0.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented enum values with links to the documentation:
+
+ + + + diff --git a/api/0.0/globals_func.html b/api/0.0/globals_func.html new file mode 100644 index 0000000..9347cd3 --- /dev/null +++ b/api/0.0/globals_func.html @@ -0,0 +1,114 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
+
+ + + + + + +
+
libpaf 1.0.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions with links to the documentation:
+ +

- p -

+
+ + + + diff --git a/api/0.0/globals_type.html b/api/0.0/globals_type.html new file mode 100644 index 0000000..a1c677d --- /dev/null +++ b/api/0.0/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
+
+ + + + + + +
+
libpaf 1.0.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented typedefs with links to the documentation:
+
+ + + + diff --git a/api/0.0/index.html b/api/0.0/index.html new file mode 100644 index 0000000..3b35a74 --- /dev/null +++ b/api/0.0/index.html @@ -0,0 +1,176 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
+
+ + + + + + +
+
libpaf 1.0.1 +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Pathfinder Client Library API
+
+
+ +

This is the documentation for the Pathfinder Client Library API.

+ +
Author
Mattias Rönnblom
+
Version
0.0 [API]
+
+1.0.1 [Implementation]
+

+Overview

+

The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

+

All the functions in this API are non-blocking in the sense that no blocking system calls are made.

+

For simplicity, the library implementing this API is refered to as libpaf, although there might be other implementations as well.

+

+Service Discovery Domains

+

A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

+

In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

+

+Domain Configuration

+

The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

+

The directory may contain an arbitrary number of domains.

+

In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

+

In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

+

The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

+

+File Format

+

libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

+

The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

+

A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

+

The server object must have a key "address", with a string value.

+

In case the transport protocol uses TLS, three optional keys may be presented in the server object:

+
    +
  • "tlsCertificateFile": the leaf certificate to use.
  • +
  • "tlsKeyFile": the private key corresponding to the leaf certificate.
  • +
  • "tlsTrustedCaFile": a file containing the trusted CA certificates.
  • +
+

In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

+

Below is an example of a domain file in JSON format:

{
+
"servers": [
+
{
+
"address": "tls:1.2.3.4:4444",
+
"tlsCertificateFile": "/etc/paf/certs/cert.pem",
+
"tlsKeyFile": "/etc/paf/certs/key.pem",
+
"tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
+
},
+
{
+
"address": "tls:5.6.7.8:8888"
+
},
+
{
+
"address": "ux:foo"
+
}
+
]
+
}
+

The same configuration (minus the certificate-related configuration), but in the newline-separated format:

"tls:1.2.3.4:4444"
+
"tls:5.6.7.8:8888"
+
"ux:foo"
+

+Domain File Rescan

+

For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

+

This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

+

+Connection Reestablishment

+

In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

+

libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

+

+Service TTL

+

A service publish via the library has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, beforing the paf_publish() call. The TTL must be an non-negative integer.

+

+Tracing

+

libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

+

To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

+

To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

+

+Multi-thread Safety

+

All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

+

No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

+
+
+ + + + diff --git a/api/0.0/jquery.js b/api/0.0/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/api/0.0/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/api/0.0/menu.js b/api/0.0/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/api/0.0/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/api/0.0/menudata.js b/api/0.0/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/api/0.0/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/api/0.0/minus.svg b/api/0.0/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/api/0.0/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/api/0.0/minusd.svg b/api/0.0/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/api/0.0/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/api/0.0/nav_f.png b/api/0.0/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/api/0.0/nav_fd.png b/api/0.0/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/api/0.0/nav_g.png b/api/0.0/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/api/0.0/open.png b/api/0.0/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes has been commited in the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not event be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/api/0.0/paf_8h_source.html b/api/0.0/paf_8h_source.html new file mode 100644 index 0000000..38e43b2 --- /dev/null +++ b/api/0.0/paf_8h_source.html @@ -0,0 +1,152 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    189#include <stdint.h>
    +
    190#include <sys/types.h>
    +
    191
    +
    192#include <paf_props.h>
    +
    193#include <paf_match.h>
    +
    194#include <paf_err.h>
    +
    195
    +
    196struct paf_context;
    +
    197
    +
    217struct paf_context *paf_attach(const char *domain_name);
    +
    218
    +
    240int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    241
    +
    269int paf_modify(struct paf_context *context, int64_t service_id,
    +
    270 const struct paf_props *props);
    +
    271
    +
    290void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    291
    +
    328int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    329 paf_match_cb match_cb, void *user);
    +
    330
    +
    343void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    344
    +
    370int paf_fd(struct paf_context *context);
    +
    371
    +
    406int paf_process(struct paf_context *context);
    +
    407
    +
    431void paf_detach(struct paf_context *context);
    +
    432
    +
    447void paf_close(struct paf_context *context);
    +
    448
    +
    474char *paf_filter_escape(const char *s);
    +
    475
    +
    476#ifdef __cplusplus
    +
    477}
    +
    478#endif
    +
    479#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/api/0.0/paf__err_8h_source.html b/api/0.0/paf__err_8h_source.html new file mode 100644 index 0000000..b6663c3 --- /dev/null +++ b/api/0.0/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/api/0.0/paf__match_8h.html b/api/0.0/paf__match_8h.html new file mode 100644 index 0000000..6f47f70 --- /dev/null +++ b/api/0.0/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/api/0.0/paf__match_8h_source.html b/api/0.0/paf__match_8h_source.html new file mode 100644 index 0000000..085381e --- /dev/null +++ b/api/0.0/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/api/0.0/paf__props_8h.html b/api/0.0/paf__props_8h.html new file mode 100644 index 0000000..da244b8 --- /dev/null +++ b/api/0.0/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/api/0.0/paf__props_8h_source.html b/api/0.0/paf__props_8h_source.html new file mode 100644 index 0000000..59f662a --- /dev/null +++ b/api/0.0/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/api/0.0/paf__value_8h.html b/api/0.0/paf__value_8h.html new file mode 100644 index 0000000..f22ec8f --- /dev/null +++ b/api/0.0/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/api/0.0/paf__value_8h_source.html b/api/0.0/paf__value_8h_source.html new file mode 100644 index 0000000..0bf9d17 --- /dev/null +++ b/api/0.0/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/api/0.0/plus.svg b/api/0.0/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/api/0.0/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/0.0/plusd.svg b/api/0.0/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/api/0.0/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/0.0/search/all_0.js b/api/0.0/search/all_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/api/0.0/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.0/search/all_1.js b/api/0.0/search/all_1.js new file mode 100644 index 0000000..e937f8c --- /dev/null +++ b/api/0.0/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_mapping',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/api/0.0/search/all_2.js b/api/0.0/search/all_2.js new file mode 100644 index 0000000..ab1fb58 --- /dev/null +++ b/api/0.0/search/all_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['domain_20configuration_1',['Domain Configuration',['../index.html#domain_mapping',1,'']]], + ['domain_20file_20rescan_2',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_3',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/api/0.0/search/all_3.js b/api/0.0/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/api/0.0/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/api/0.0/search/all_4.js b/api/0.0/search/all_4.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/api/0.0/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.0/search/all_5.js b/api/0.0/search/all_5.js new file mode 100644 index 0000000..26e5292 --- /dev/null +++ b/api/0.0/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]] +]; diff --git a/api/0.0/search/all_6.js b/api/0.0/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/api/0.0/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/api/0.0/search/all_7.js b/api/0.0/search/all_7.js new file mode 100644 index 0000000..373b266 --- /dev/null +++ b/api/0.0/search/all_7.js @@ -0,0 +1,46 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fsubscribe_29',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_30',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_31',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_32',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_33',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_34',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_35',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_36',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_37',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_38',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_39',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_40',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_41',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_42',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.0/search/all_8.js b/api/0.0/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/api/0.0/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/api/0.0/search/all_9.js b/api/0.0/search/all_9.js new file mode 100644 index 0000000..7787f7b --- /dev/null +++ b/api/0.0/search/all_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['service_20discovery_20domains_1',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/api/0.0/search/all_a.js b/api/0.0/search/all_a.js new file mode 100644 index 0000000..7969246 --- /dev/null +++ b/api/0.0/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/api/0.0/search/close.svg b/api/0.0/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/api/0.0/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/api/0.0/search/enums_0.js b/api/0.0/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/api/0.0/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/api/0.0/search/enumvalues_0.js b/api/0.0/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/api/0.0/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/api/0.0/search/files_0.js b/api/0.0/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/api/0.0/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/api/0.0/search/functions_0.js b/api/0.0/search/functions_0.js new file mode 100644 index 0000000..a5cfd79 --- /dev/null +++ b/api/0.0/search/functions_0.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fsubscribe_20',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_21',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_22',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_23',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_24',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_25',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_26',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_27',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_28',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_29',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_30',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_31',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/api/0.0/search/mag.svg b/api/0.0/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/api/0.0/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/api/0.0/search/mag_d.svg b/api/0.0/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/api/0.0/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/api/0.0/search/mag_sel.svg b/api/0.0/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/api/0.0/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/api/0.0/search/mag_seld.svg b/api/0.0/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/api/0.0/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/api/0.0/search/pages_0.js b/api/0.0/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/api/0.0/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.0/search/pages_1.js b/api/0.0/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/api/0.0/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.0/search/pages_2.js b/api/0.0/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/api/0.0/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.0/search/pages_3.js b/api/0.0/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/api/0.0/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.0/search/search.css b/api/0.0/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/api/0.0/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/api/0.0/search/search.js b/api/0.0/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/api/0.0/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/api/0.0/splitbard.png b/api/0.0/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/api/0.0/sync_off.png b/api/0.0/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/api/0.0/sync_on.png b/api/0.0/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/api/0.0/tab_a.png b/api/0.0/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/api/0.0/tab_ad.png b/api/0.0/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/api/0.0/tab_s.png b/api/0.0/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/api/0.0/tab_sd.png b/api/0.0/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/api/0.0/tabs.css b/api/0.0/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/api/0.0/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/api/0.1/bc_s.png b/api/0.1/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/api/0.1/bc_sd.png b/api/0.1/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/api/0.1/closed.png b/api/0.1/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/api/0.1/dir_d44c64559bbebec7f509842c48db8b23.html b/api/0.1/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..1245591 --- /dev/null +++ b/api/0.1/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/api/0.1/doc.svg b/api/0.1/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/api/0.1/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api/0.1/docd.svg b/api/0.1/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/api/0.1/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api/0.1/doxygen.css b/api/0.1/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/api/0.1/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/api/0.1/doxygen.svg b/api/0.1/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/api/0.1/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/0.1/dynsections.js b/api/0.1/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/api/0.1/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/api/0.1/files.html b/api/0.1/files.html new file mode 100644 index 0000000..14398ee --- /dev/null +++ b/api/0.1/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/api/0.1/folderclosed.svg b/api/0.1/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/api/0.1/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/api/0.1/folderclosedd.svg b/api/0.1/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/api/0.1/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/api/0.1/folderopen.svg b/api/0.1/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/api/0.1/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/api/0.1/folderopend.svg b/api/0.1/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/api/0.1/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api/0.1/globals.html b/api/0.1/globals.html new file mode 100644 index 0000000..8253aa6 --- /dev/null +++ b/api/0.1/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/api/0.1/globals_enum.html b/api/0.1/globals_enum.html new file mode 100644 index 0000000..480504e --- /dev/null +++ b/api/0.1/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/api/0.1/globals_eval.html b/api/0.1/globals_eval.html new file mode 100644 index 0000000..72b1f53 --- /dev/null +++ b/api/0.1/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/api/0.1/globals_func.html b/api/0.1/globals_func.html new file mode 100644 index 0000000..deb9ca9 --- /dev/null +++ b/api/0.1/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/api/0.1/globals_type.html b/api/0.1/globals_type.html new file mode 100644 index 0000000..7c21d3c --- /dev/null +++ b/api/0.1/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/api/0.1/index.html b/api/0.1/index.html new file mode 100644 index 0000000..b86037d --- /dev/null +++ b/api/0.1/index.html @@ -0,0 +1,213 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.12 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may have a key "minProtocolVersion", used to increase the minimum protocol version advertised as supported by libpaf to that server. If "minProtocolVersion" is set higher than the maximum version suported by libpaf (i.e., > 3), no connections will be initiated to that server.

    +

    A server object may have the key "maxProtocolVersion", used to decrease the maximum protocol version advertised by libpaf. If the "maxProtocolVersion" is set lower than the minimum version supported by libpaf (i.e., < 2), no connections will be initiated to that server.

    +

    If both "minProtocolVersion" and "maxProtocolVersion" are set, "minProtocolVersion" must be equal to or lower than "maxProtocolVersion".

    +

    A server object may have a keys "minIdleTime" or "maxIdleTime" to configure client-side Liveness Tracking, and override the PAF_IDLE_MIN and PAF_IDLE_MAX values and the compile-time defaults (in case the environment variables are not set).

    +

    If both "minIdleTime" and "maxIdleTime" are set, "minIdleTime" must be equal to or lower than "maxIdleTime".

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "minProtocolVersion": 3,
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam",
    +
    "minIdleTime": 10
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    "maxProtocolVersion": 2,
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Liveness Tracking

    +

    On connections where the Pathfinder protocol version 3 is negotiated to be used, libpaf performs server liveness tracking on the level of the Pathfinder protocol.

    +

    On v3 connections, libpaf imposes an upper limit on how long time the remote peer is allowed to remain idle. When maximum idle time is approaching, libpaf will query the server to ensure it is still alive. In case the server also employs liveness checking, any server queries will be treated as a sign of life, and make libpaf post-poned any liveness query.

    +

    The maximum idle time is 30 seconds by default, and may be overriden by setting the PAF_IDLE_MAX environment variable.

    +

    The actual max idle time used may be lower than PAF_IDLE_MAX, in case low-TTL services have been published by the application, or have been matched in one of its subscriptions.

    +

    The actual max idle time will never be set to lower than PAF_IDLE_MIN, which is 4 seconds by default. To protect the server, libpaf will treat PAF_IDLE_MIN set lower than 1 second as set to 1 second.

    +

    On version 2 connections, libpaf depends on the transport protocol (e.g., TCP) for liveness checking.

    +

    On version 3 connections, TCP keepalive is disabled.

    +

    The minimum idle time is also used as an upper bound for the total amount of time the initial transport connection establishment (e.g., TCP three-way handshake and TLS hello) and the Pathfinder protocol-level hello transaction is allowed to take.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service published using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    For a description of how service TTLs work in Pathfinder, please refer to the Pathfinder protocol specification.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/api/0.1/jquery.js b/api/0.1/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/api/0.1/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/api/0.1/menu.js b/api/0.1/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/api/0.1/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/api/0.1/menudata.js b/api/0.1/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/api/0.1/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/api/0.1/minus.svg b/api/0.1/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/api/0.1/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/api/0.1/minusd.svg b/api/0.1/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/api/0.1/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/api/0.1/nav_f.png b/api/0.1/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/api/0.1/nav_fd.png b/api/0.1/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/api/0.1/nav_g.png b/api/0.1/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/api/0.1/open.png b/api/0.1/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/api/0.1/paf_8h_source.html b/api/0.1/paf_8h_source.html new file mode 100644 index 0000000..2fe3824 --- /dev/null +++ b/api/0.1/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    301#include <stdint.h>
    +
    302#include <sys/types.h>
    +
    303
    +
    304#include <paf_props.h>
    +
    305#include <paf_match.h>
    +
    306#include <paf_err.h>
    +
    307
    +
    308struct paf_context;
    +
    309
    +
    332struct paf_context *paf_attach(const char *domain_name);
    +
    333
    +
    356int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    357
    +
    385int paf_modify(struct paf_context *context, int64_t service_id,
    +
    386 const struct paf_props *props);
    +
    387
    +
    406void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    407
    +
    426void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    427
    +
    464int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    465 paf_match_cb match_cb, void *user);
    +
    466
    +
    479void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    480
    +
    506int paf_fd(struct paf_context *context);
    +
    507
    +
    542int paf_process(struct paf_context *context);
    +
    543
    +
    567void paf_detach(struct paf_context *context);
    +
    568
    +
    583void paf_close(struct paf_context *context);
    +
    584
    +
    610char *paf_filter_escape(const char *s);
    +
    611
    +
    612#ifdef __cplusplus
    +
    613}
    +
    614#endif
    +
    615#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/api/0.1/paf__err_8h_source.html b/api/0.1/paf__err_8h_source.html new file mode 100644 index 0000000..54f2bd7 --- /dev/null +++ b/api/0.1/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/api/0.1/paf__match_8h.html b/api/0.1/paf__match_8h.html new file mode 100644 index 0000000..89ccf53 --- /dev/null +++ b/api/0.1/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/api/0.1/paf__match_8h_source.html b/api/0.1/paf__match_8h_source.html new file mode 100644 index 0000000..e384d7e --- /dev/null +++ b/api/0.1/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/api/0.1/paf__props_8h.html b/api/0.1/paf__props_8h.html new file mode 100644 index 0000000..e4df194 --- /dev/null +++ b/api/0.1/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/api/0.1/paf__props_8h_source.html b/api/0.1/paf__props_8h_source.html new file mode 100644 index 0000000..b65a2fc --- /dev/null +++ b/api/0.1/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/api/0.1/paf__value_8h.html b/api/0.1/paf__value_8h.html new file mode 100644 index 0000000..5e4b902 --- /dev/null +++ b/api/0.1/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/api/0.1/paf__value_8h_source.html b/api/0.1/paf__value_8h_source.html new file mode 100644 index 0000000..1ae13e4 --- /dev/null +++ b/api/0.1/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/api/0.1/plus.svg b/api/0.1/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/api/0.1/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/0.1/plusd.svg b/api/0.1/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/api/0.1/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/0.1/search/all_0.js b/api/0.1/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/api/0.1/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.1/search/all_1.js b/api/0.1/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/api/0.1/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/api/0.1/search/all_2.js b/api/0.1/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/api/0.1/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/api/0.1/search/all_3.js b/api/0.1/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/api/0.1/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/api/0.1/search/all_4.js b/api/0.1/search/all_4.js new file mode 100644 index 0000000..32d8d9a --- /dev/null +++ b/api/0.1/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['liveness_20tracking_1',['Liveness Tracking',['../index.html#liveness',1,'']]] +]; diff --git a/api/0.1/search/all_5.js b/api/0.1/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/api/0.1/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/api/0.1/search/all_6.js b/api/0.1/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/api/0.1/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/api/0.1/search/all_7.js b/api/0.1/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/api/0.1/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.1/search/all_8.js b/api/0.1/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/api/0.1/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/api/0.1/search/all_9.js b/api/0.1/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/api/0.1/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/api/0.1/search/all_a.js b/api/0.1/search/all_a.js new file mode 100644 index 0000000..a57ca9e --- /dev/null +++ b/api/0.1/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['tracking_2',['Liveness Tracking',['../index.html#liveness',1,'']]], + ['ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/api/0.1/search/close.svg b/api/0.1/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/api/0.1/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/api/0.1/search/enums_0.js b/api/0.1/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/api/0.1/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/api/0.1/search/enumvalues_0.js b/api/0.1/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/api/0.1/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/api/0.1/search/files_0.js b/api/0.1/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/api/0.1/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/api/0.1/search/functions_0.js b/api/0.1/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/api/0.1/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/api/0.1/search/mag.svg b/api/0.1/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/api/0.1/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/api/0.1/search/mag_d.svg b/api/0.1/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/api/0.1/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/api/0.1/search/mag_sel.svg b/api/0.1/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/api/0.1/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/api/0.1/search/mag_seld.svg b/api/0.1/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/api/0.1/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/api/0.1/search/pages_0.js b/api/0.1/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/api/0.1/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.1/search/pages_1.js b/api/0.1/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/api/0.1/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.1/search/pages_2.js b/api/0.1/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/api/0.1/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.1/search/pages_3.js b/api/0.1/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/api/0.1/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/0.1/search/search.css b/api/0.1/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/api/0.1/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/api/0.1/search/search.js b/api/0.1/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/api/0.1/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/api/0.1/splitbard.png b/api/0.1/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/api/0.1/sync_off.png b/api/0.1/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/api/0.1/sync_on.png b/api/0.1/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/api/0.1/tab_a.png b/api/0.1/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/api/0.1/tab_ad.png b/api/0.1/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/api/0.1/tab_s.png b/api/0.1/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/api/0.1/tab_sd.png b/api/0.1/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/api/0.1/tabs.css b/api/0.1/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/api/0.1/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/api/head/bc_s.png b/api/head/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/api/head/bc_sd.png b/api/head/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/api/head/closed.png b/api/head/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/api/head/dir_d44c64559bbebec7f509842c48db8b23.html b/api/head/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..3a1ccef --- /dev/null +++ b/api/head/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/api/head/doc.svg b/api/head/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/api/head/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api/head/docd.svg b/api/head/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/api/head/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api/head/doxygen.css b/api/head/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/api/head/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/api/head/doxygen.svg b/api/head/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/api/head/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/head/dynsections.js b/api/head/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/api/head/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/api/head/files.html b/api/head/files.html new file mode 100644 index 0000000..5e598ab --- /dev/null +++ b/api/head/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/api/head/folderclosed.svg b/api/head/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/api/head/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/api/head/folderclosedd.svg b/api/head/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/api/head/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/api/head/folderopen.svg b/api/head/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/api/head/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/api/head/folderopend.svg b/api/head/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/api/head/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api/head/globals.html b/api/head/globals.html new file mode 100644 index 0000000..ef78387 --- /dev/null +++ b/api/head/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/api/head/globals_enum.html b/api/head/globals_enum.html new file mode 100644 index 0000000..cd8aa22 --- /dev/null +++ b/api/head/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/api/head/globals_eval.html b/api/head/globals_eval.html new file mode 100644 index 0000000..ae2ad4b --- /dev/null +++ b/api/head/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/api/head/globals_func.html b/api/head/globals_func.html new file mode 100644 index 0000000..61bfa22 --- /dev/null +++ b/api/head/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/api/head/globals_type.html b/api/head/globals_type.html new file mode 100644 index 0000000..13b1811 --- /dev/null +++ b/api/head/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/api/head/index.html b/api/head/index.html new file mode 100644 index 0000000..b4dc166 --- /dev/null +++ b/api/head/index.html @@ -0,0 +1,213 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.12 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may have a key "minProtocolVersion", used to increase the minimum protocol version advertised as supported by libpaf to that server. If "minProtocolVersion" is set higher than the maximum version suported by libpaf (i.e., > 3), no connections will be initiated to that server.

    +

    A server object may have the key "maxProtocolVersion", used to decrease the maximum protocol version advertised by libpaf. If the "maxProtocolVersion" is set lower than the minimum version supported by libpaf (i.e., < 2), no connections will be initiated to that server.

    +

    If both "minProtocolVersion" and "maxProtocolVersion" are set, "minProtocolVersion" must be equal to or lower than "maxProtocolVersion".

    +

    A server object may have a keys "minIdleTime" or "maxIdleTime" to configure client-side Liveness Tracking, and override the PAF_IDLE_MIN and PAF_IDLE_MAX values and the compile-time defaults (in case the environment variables are not set).

    +

    If both "minIdleTime" and "maxIdleTime" are set, "minIdleTime" must be equal to or lower than "maxIdleTime".

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "minProtocolVersion": 3,
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam",
    +
    "minIdleTime": 10
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    "maxProtocolVersion": 2,
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Liveness Tracking

    +

    On connections where the Pathfinder protocol version 3 is negotiated to be used, libpaf performs server liveness tracking on the level of the Pathfinder protocol.

    +

    On v3 connections, libpaf imposes an upper limit on how long time the remote peer is allowed to remain idle. When maximum idle time is approaching, libpaf will query the server to ensure it is still alive. In case the server also employs liveness checking, any server queries will be treated as a sign of life, and make libpaf post-poned any liveness query.

    +

    The maximum idle time is 30 seconds by default, and may be overriden by setting the PAF_IDLE_MAX environment variable.

    +

    The actual max idle time used may be lower than PAF_IDLE_MAX, in case low-TTL services have been published by the application, or have been matched in one of its subscriptions.

    +

    The actual max idle time will never be set to lower than PAF_IDLE_MIN, which is 4 seconds by default. To protect the server, libpaf will treat PAF_IDLE_MIN set lower than 1 second as set to 1 second.

    +

    On version 2 connections, libpaf depends on the transport protocol (e.g., TCP) for liveness checking.

    +

    On version 3 connections, TCP keepalive is disabled.

    +

    The minimum idle time is also used as an upper bound for the total amount of time the initial transport connection establishment (e.g., TCP three-way handshake and TLS hello) and the Pathfinder protocol-level hello transaction is allowed to take.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service published using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    For a description of how service TTLs work in Pathfinder, please refer to the Pathfinder protocol specification.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/api/head/jquery.js b/api/head/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/api/head/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/api/head/menu.js b/api/head/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/api/head/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/api/head/menudata.js b/api/head/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/api/head/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/api/head/minus.svg b/api/head/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/api/head/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/api/head/minusd.svg b/api/head/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/api/head/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/api/head/nav_f.png b/api/head/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/api/head/nav_fd.png b/api/head/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/api/head/nav_g.png b/api/head/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/api/head/open.png b/api/head/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/api/head/paf_8h_source.html b/api/head/paf_8h_source.html new file mode 100644 index 0000000..49db8db --- /dev/null +++ b/api/head/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    301#include <stdint.h>
    +
    302#include <sys/types.h>
    +
    303
    +
    304#include <paf_props.h>
    +
    305#include <paf_match.h>
    +
    306#include <paf_err.h>
    +
    307
    +
    308struct paf_context;
    +
    309
    +
    332struct paf_context *paf_attach(const char *domain_name);
    +
    333
    +
    356int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    357
    +
    385int paf_modify(struct paf_context *context, int64_t service_id,
    +
    386 const struct paf_props *props);
    +
    387
    +
    406void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    407
    +
    426void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    427
    +
    464int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    465 paf_match_cb match_cb, void *user);
    +
    466
    +
    479void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    480
    +
    506int paf_fd(struct paf_context *context);
    +
    507
    +
    542int paf_process(struct paf_context *context);
    +
    543
    +
    567void paf_detach(struct paf_context *context);
    +
    568
    +
    583void paf_close(struct paf_context *context);
    +
    584
    +
    610char *paf_filter_escape(const char *s);
    +
    611
    +
    612#ifdef __cplusplus
    +
    613}
    +
    614#endif
    +
    615#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/api/head/paf__err_8h_source.html b/api/head/paf__err_8h_source.html new file mode 100644 index 0000000..837da86 --- /dev/null +++ b/api/head/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/api/head/paf__match_8h.html b/api/head/paf__match_8h.html new file mode 100644 index 0000000..e3651e5 --- /dev/null +++ b/api/head/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/api/head/paf__match_8h_source.html b/api/head/paf__match_8h_source.html new file mode 100644 index 0000000..50a4cdd --- /dev/null +++ b/api/head/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/api/head/paf__props_8h.html b/api/head/paf__props_8h.html new file mode 100644 index 0000000..31ff184 --- /dev/null +++ b/api/head/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/api/head/paf__props_8h_source.html b/api/head/paf__props_8h_source.html new file mode 100644 index 0000000..796608c --- /dev/null +++ b/api/head/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/api/head/paf__value_8h.html b/api/head/paf__value_8h.html new file mode 100644 index 0000000..ae9c6a7 --- /dev/null +++ b/api/head/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/api/head/paf__value_8h_source.html b/api/head/paf__value_8h_source.html new file mode 100644 index 0000000..c4a46de --- /dev/null +++ b/api/head/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/api/head/plus.svg b/api/head/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/api/head/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/head/plusd.svg b/api/head/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/api/head/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/head/search/all_0.js b/api/head/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/api/head/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/head/search/all_1.js b/api/head/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/api/head/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/api/head/search/all_2.js b/api/head/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/api/head/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/api/head/search/all_3.js b/api/head/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/api/head/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/api/head/search/all_4.js b/api/head/search/all_4.js new file mode 100644 index 0000000..32d8d9a --- /dev/null +++ b/api/head/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['liveness_20tracking_1',['Liveness Tracking',['../index.html#liveness',1,'']]] +]; diff --git a/api/head/search/all_5.js b/api/head/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/api/head/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/api/head/search/all_6.js b/api/head/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/api/head/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/api/head/search/all_7.js b/api/head/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/api/head/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/head/search/all_8.js b/api/head/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/api/head/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/api/head/search/all_9.js b/api/head/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/api/head/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/api/head/search/all_a.js b/api/head/search/all_a.js new file mode 100644 index 0000000..a57ca9e --- /dev/null +++ b/api/head/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['tracking_2',['Liveness Tracking',['../index.html#liveness',1,'']]], + ['ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/api/head/search/close.svg b/api/head/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/api/head/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/api/head/search/enums_0.js b/api/head/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/api/head/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/api/head/search/enumvalues_0.js b/api/head/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/api/head/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/api/head/search/files_0.js b/api/head/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/api/head/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/api/head/search/functions_0.js b/api/head/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/api/head/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/api/head/search/mag.svg b/api/head/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/api/head/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/api/head/search/mag_d.svg b/api/head/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/api/head/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/api/head/search/mag_sel.svg b/api/head/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/api/head/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/api/head/search/mag_seld.svg b/api/head/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/api/head/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/api/head/search/pages_0.js b/api/head/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/api/head/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/head/search/pages_1.js b/api/head/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/api/head/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/head/search/pages_2.js b/api/head/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/api/head/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/head/search/pages_3.js b/api/head/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/api/head/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/head/search/search.css b/api/head/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/api/head/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/api/head/search/search.js b/api/head/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/api/head/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/api/head/splitbard.png b/api/head/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/api/head/sync_off.png b/api/head/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/api/head/sync_on.png b/api/head/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/api/head/tab_a.png b/api/head/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/api/head/tab_ad.png b/api/head/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/api/head/tab_s.png b/api/head/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/api/head/tab_sd.png b/api/head/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/api/head/tabs.css b/api/head/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/api/head/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/api/latest/bc_s.png b/api/latest/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/api/latest/bc_sd.png b/api/latest/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/api/latest/closed.png b/api/latest/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/api/latest/dir_d44c64559bbebec7f509842c48db8b23.html b/api/latest/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..c642d93 --- /dev/null +++ b/api/latest/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/api/latest/doc.svg b/api/latest/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/api/latest/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api/latest/docd.svg b/api/latest/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/api/latest/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api/latest/doxygen.css b/api/latest/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/api/latest/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/api/latest/doxygen.svg b/api/latest/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/api/latest/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/api/latest/dynsections.js b/api/latest/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/api/latest/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/api/latest/files.html b/api/latest/files.html new file mode 100644 index 0000000..6ef26a4 --- /dev/null +++ b/api/latest/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/api/latest/folderclosed.svg b/api/latest/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/api/latest/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/api/latest/folderclosedd.svg b/api/latest/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/api/latest/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/api/latest/folderopen.svg b/api/latest/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/api/latest/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/api/latest/folderopend.svg b/api/latest/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/api/latest/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/api/latest/globals.html b/api/latest/globals.html new file mode 100644 index 0000000..f9b3e6e --- /dev/null +++ b/api/latest/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/api/latest/globals_enum.html b/api/latest/globals_enum.html new file mode 100644 index 0000000..1e51825 --- /dev/null +++ b/api/latest/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/api/latest/globals_eval.html b/api/latest/globals_eval.html new file mode 100644 index 0000000..a8867a6 --- /dev/null +++ b/api/latest/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/api/latest/globals_func.html b/api/latest/globals_func.html new file mode 100644 index 0000000..cfd82da --- /dev/null +++ b/api/latest/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/api/latest/globals_type.html b/api/latest/globals_type.html new file mode 100644 index 0000000..4c27b03 --- /dev/null +++ b/api/latest/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/api/latest/index.html b/api/latest/index.html new file mode 100644 index 0000000..a07fe5a --- /dev/null +++ b/api/latest/index.html @@ -0,0 +1,213 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.12 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may have a key "minProtocolVersion", used to increase the minimum protocol version advertised as supported by libpaf to that server. If "minProtocolVersion" is set higher than the maximum version suported by libpaf (i.e., > 3), no connections will be initiated to that server.

    +

    A server object may have the key "maxProtocolVersion", used to decrease the maximum protocol version advertised by libpaf. If the "maxProtocolVersion" is set lower than the minimum version supported by libpaf (i.e., < 2), no connections will be initiated to that server.

    +

    If both "minProtocolVersion" and "maxProtocolVersion" are set, "minProtocolVersion" must be equal to or lower than "maxProtocolVersion".

    +

    A server object may have a keys "minIdleTime" or "maxIdleTime" to configure client-side Liveness Tracking, and override the PAF_IDLE_MIN and PAF_IDLE_MAX values and the compile-time defaults (in case the environment variables are not set).

    +

    If both "minIdleTime" and "maxIdleTime" are set, "minIdleTime" must be equal to or lower than "maxIdleTime".

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "minProtocolVersion": 3,
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam",
    +
    "minIdleTime": 10
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    "maxProtocolVersion": 2,
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Liveness Tracking

    +

    On connections where the Pathfinder protocol version 3 is negotiated to be used, libpaf performs server liveness tracking on the level of the Pathfinder protocol.

    +

    On v3 connections, libpaf imposes an upper limit on how long time the remote peer is allowed to remain idle. When maximum idle time is approaching, libpaf will query the server to ensure it is still alive. In case the server also employs liveness checking, any server queries will be treated as a sign of life, and make libpaf post-poned any liveness query.

    +

    The maximum idle time is 30 seconds by default, and may be overriden by setting the PAF_IDLE_MAX environment variable.

    +

    The actual max idle time used may be lower than PAF_IDLE_MAX, in case low-TTL services have been published by the application, or have been matched in one of its subscriptions.

    +

    The actual max idle time will never be set to lower than PAF_IDLE_MIN, which is 4 seconds by default. To protect the server, libpaf will treat PAF_IDLE_MIN set lower than 1 second as set to 1 second.

    +

    On version 2 connections, libpaf depends on the transport protocol (e.g., TCP) for liveness checking.

    +

    On version 3 connections, TCP keepalive is disabled.

    +

    The minimum idle time is also used as an upper bound for the total amount of time the initial transport connection establishment (e.g., TCP three-way handshake and TLS hello) and the Pathfinder protocol-level hello transaction is allowed to take.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service published using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    For a description of how service TTLs work in Pathfinder, please refer to the Pathfinder protocol specification.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/api/latest/jquery.js b/api/latest/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/api/latest/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/api/latest/menu.js b/api/latest/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/api/latest/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/api/latest/menudata.js b/api/latest/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/api/latest/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/api/latest/minus.svg b/api/latest/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/api/latest/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/api/latest/minusd.svg b/api/latest/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/api/latest/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/api/latest/nav_f.png b/api/latest/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/api/latest/nav_fd.png b/api/latest/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/api/latest/nav_g.png b/api/latest/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/api/latest/open.png b/api/latest/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/api/latest/paf_8h_source.html b/api/latest/paf_8h_source.html new file mode 100644 index 0000000..903f204 --- /dev/null +++ b/api/latest/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    301#include <stdint.h>
    +
    302#include <sys/types.h>
    +
    303
    +
    304#include <paf_props.h>
    +
    305#include <paf_match.h>
    +
    306#include <paf_err.h>
    +
    307
    +
    308struct paf_context;
    +
    309
    +
    332struct paf_context *paf_attach(const char *domain_name);
    +
    333
    +
    356int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    357
    +
    385int paf_modify(struct paf_context *context, int64_t service_id,
    +
    386 const struct paf_props *props);
    +
    387
    +
    406void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    407
    +
    426void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    427
    +
    464int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    465 paf_match_cb match_cb, void *user);
    +
    466
    +
    479void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    480
    +
    506int paf_fd(struct paf_context *context);
    +
    507
    +
    542int paf_process(struct paf_context *context);
    +
    543
    +
    567void paf_detach(struct paf_context *context);
    +
    568
    +
    583void paf_close(struct paf_context *context);
    +
    584
    +
    610char *paf_filter_escape(const char *s);
    +
    611
    +
    612#ifdef __cplusplus
    +
    613}
    +
    614#endif
    +
    615#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/api/latest/paf__err_8h_source.html b/api/latest/paf__err_8h_source.html new file mode 100644 index 0000000..2f9c03e --- /dev/null +++ b/api/latest/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/api/latest/paf__match_8h.html b/api/latest/paf__match_8h.html new file mode 100644 index 0000000..e00f6d6 --- /dev/null +++ b/api/latest/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/api/latest/paf__match_8h_source.html b/api/latest/paf__match_8h_source.html new file mode 100644 index 0000000..40fb682 --- /dev/null +++ b/api/latest/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/api/latest/paf__props_8h.html b/api/latest/paf__props_8h.html new file mode 100644 index 0000000..437ec9c --- /dev/null +++ b/api/latest/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/api/latest/paf__props_8h_source.html b/api/latest/paf__props_8h_source.html new file mode 100644 index 0000000..eaa3b5f --- /dev/null +++ b/api/latest/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/api/latest/paf__value_8h.html b/api/latest/paf__value_8h.html new file mode 100644 index 0000000..e6a1a72 --- /dev/null +++ b/api/latest/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/api/latest/paf__value_8h_source.html b/api/latest/paf__value_8h_source.html new file mode 100644 index 0000000..5c6e01e --- /dev/null +++ b/api/latest/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/api/latest/plus.svg b/api/latest/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/api/latest/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/latest/plusd.svg b/api/latest/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/api/latest/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/api/latest/search/all_0.js b/api/latest/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/api/latest/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/latest/search/all_1.js b/api/latest/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/api/latest/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/api/latest/search/all_2.js b/api/latest/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/api/latest/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/api/latest/search/all_3.js b/api/latest/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/api/latest/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/api/latest/search/all_4.js b/api/latest/search/all_4.js new file mode 100644 index 0000000..32d8d9a --- /dev/null +++ b/api/latest/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['liveness_20tracking_1',['Liveness Tracking',['../index.html#liveness',1,'']]] +]; diff --git a/api/latest/search/all_5.js b/api/latest/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/api/latest/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/api/latest/search/all_6.js b/api/latest/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/api/latest/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/api/latest/search/all_7.js b/api/latest/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/api/latest/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/latest/search/all_8.js b/api/latest/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/api/latest/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/api/latest/search/all_9.js b/api/latest/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/api/latest/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/api/latest/search/all_a.js b/api/latest/search/all_a.js new file mode 100644 index 0000000..a57ca9e --- /dev/null +++ b/api/latest/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['tracking_2',['Liveness Tracking',['../index.html#liveness',1,'']]], + ['ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/api/latest/search/close.svg b/api/latest/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/api/latest/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/api/latest/search/enums_0.js b/api/latest/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/api/latest/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/api/latest/search/enumvalues_0.js b/api/latest/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/api/latest/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/api/latest/search/files_0.js b/api/latest/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/api/latest/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/api/latest/search/functions_0.js b/api/latest/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/api/latest/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/api/latest/search/mag.svg b/api/latest/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/api/latest/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/api/latest/search/mag_d.svg b/api/latest/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/api/latest/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/api/latest/search/mag_sel.svg b/api/latest/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/api/latest/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/api/latest/search/mag_seld.svg b/api/latest/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/api/latest/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/api/latest/search/pages_0.js b/api/latest/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/api/latest/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/latest/search/pages_1.js b/api/latest/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/api/latest/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/latest/search/pages_2.js b/api/latest/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/api/latest/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/latest/search/pages_3.js b/api/latest/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/api/latest/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/api/latest/search/search.css b/api/latest/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/api/latest/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/api/latest/search/search.js b/api/latest/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/api/latest/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/api/latest/splitbard.png b/api/latest/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/api/latest/sync_off.png b/api/latest/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/api/latest/sync_on.png b/api/latest/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/api/latest/tab_a.png b/api/latest/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/api/latest/tab_ad.png b/api/latest/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/api/latest/tab_s.png b/api/latest/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/api/latest/tab_sd.png b/api/latest/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/api/latest/tabs.css b/api/latest/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/api/latest/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.0.0/bc_s.png b/doc/v1.0.0/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/bc_sd.png b/doc/v1.0.0/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/closed.png b/doc/v1.0.0/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.0.0/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..0a028f1 --- /dev/null +++ b/doc/v1.0.0/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.0.0/doc.svg b/doc/v1.0.0/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.0.0/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.0.0/docd.svg b/doc/v1.0.0/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.0.0/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.0.0/doxygen.css b/doc/v1.0.0/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.0.0/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.0.0/doxygen.svg b/doc/v1.0.0/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.0.0/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.0.0/dynsections.js b/doc/v1.0.0/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.0.0/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.0.0/files.html b/doc/v1.0.0/files.html new file mode 100644 index 0000000..e7f593f --- /dev/null +++ b/doc/v1.0.0/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.0.0/folderclosed.svg b/doc/v1.0.0/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.0.0/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.0.0/folderclosedd.svg b/doc/v1.0.0/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.0.0/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.0.0/folderopen.svg b/doc/v1.0.0/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.0.0/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.0.0/folderopend.svg b/doc/v1.0.0/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.0.0/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.0.0/globals.html b/doc/v1.0.0/globals.html new file mode 100644 index 0000000..750ca94 --- /dev/null +++ b/doc/v1.0.0/globals.html @@ -0,0 +1,120 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.0.0/globals_enum.html b/doc/v1.0.0/globals_enum.html new file mode 100644 index 0000000..dd89347 --- /dev/null +++ b/doc/v1.0.0/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.0.0/globals_eval.html b/doc/v1.0.0/globals_eval.html new file mode 100644 index 0000000..f5f9cb8 --- /dev/null +++ b/doc/v1.0.0/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.0.0/globals_func.html b/doc/v1.0.0/globals_func.html new file mode 100644 index 0000000..bc63629 --- /dev/null +++ b/doc/v1.0.0/globals_func.html @@ -0,0 +1,114 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.0.0/globals_type.html b/doc/v1.0.0/globals_type.html new file mode 100644 index 0000000..99cdf2b --- /dev/null +++ b/doc/v1.0.0/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.0.0/index.html b/doc/v1.0.0/index.html new file mode 100644 index 0000000..37c5702 --- /dev/null +++ b/doc/v1.0.0/index.html @@ -0,0 +1,94 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.0 [API]
    +
    +1.0.0 [Implementation]
    +
    +
    + + + + diff --git a/doc/v1.0.0/jquery.js b/doc/v1.0.0/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.0.0/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.0.0/menu.js b/doc/v1.0.0/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.0.0/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.0.0/menudata.js b/doc/v1.0.0/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.0.0/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.0.0/minus.svg b/doc/v1.0.0/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.0.0/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.0.0/minusd.svg b/doc/v1.0.0/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.0.0/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.0.0/nav_f.png b/doc/v1.0.0/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/nav_fd.png b/doc/v1.0.0/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/nav_g.png b/doc/v1.0.0/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/open.png b/doc/v1.0.0/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes has been commited in the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not event be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.0.0/paf_8h_source.html b/doc/v1.0.0/paf_8h_source.html new file mode 100644 index 0000000..26894a6 --- /dev/null +++ b/doc/v1.0.0/paf_8h_source.html @@ -0,0 +1,152 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    33#include <stdint.h>
    +
    34#include <sys/types.h>
    +
    35
    +
    36#include <paf_props.h>
    +
    37#include <paf_match.h>
    +
    38#include <paf_err.h>
    +
    39
    +
    40struct paf_context;
    +
    41
    +
    61struct paf_context *paf_attach(const char *domain_name);
    +
    62
    +
    84int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    85
    +
    113int paf_modify(struct paf_context *context, int64_t service_id,
    +
    114 const struct paf_props *props);
    +
    115
    +
    134void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    135
    +
    172int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    173 paf_match_cb match_cb, void *user);
    +
    174
    +
    187void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    188
    +
    214int paf_fd(struct paf_context *context);
    +
    215
    +
    250int paf_process(struct paf_context *context);
    +
    251
    +
    275void paf_detach(struct paf_context *context);
    +
    276
    +
    291void paf_close(struct paf_context *context);
    +
    292
    +
    318char *paf_filter_escape(const char *s);
    +
    319
    +
    320#ifdef __cplusplus
    +
    321}
    +
    322#endif
    +
    323#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.0.0/paf__err_8h_source.html b/doc/v1.0.0/paf__err_8h_source.html new file mode 100644 index 0000000..fd4e717 --- /dev/null +++ b/doc/v1.0.0/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.0.0/paf__match_8h.html b/doc/v1.0.0/paf__match_8h.html new file mode 100644 index 0000000..43abf4e --- /dev/null +++ b/doc/v1.0.0/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.0.0/paf__match_8h_source.html b/doc/v1.0.0/paf__match_8h_source.html new file mode 100644 index 0000000..9686388 --- /dev/null +++ b/doc/v1.0.0/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.0.0/paf__props_8h.html b/doc/v1.0.0/paf__props_8h.html new file mode 100644 index 0000000..f318a14 --- /dev/null +++ b/doc/v1.0.0/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.0.0/paf__props_8h_source.html b/doc/v1.0.0/paf__props_8h_source.html new file mode 100644 index 0000000..ec585ed --- /dev/null +++ b/doc/v1.0.0/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.0.0/paf__value_8h.html b/doc/v1.0.0/paf__value_8h.html new file mode 100644 index 0000000..9e7f2cb --- /dev/null +++ b/doc/v1.0.0/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.0.0/paf__value_8h_source.html b/doc/v1.0.0/paf__value_8h_source.html new file mode 100644 index 0000000..881257c --- /dev/null +++ b/doc/v1.0.0/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.0 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.0.0/plus.svg b/doc/v1.0.0/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.0.0/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.0.0/plusd.svg b/doc/v1.0.0/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.0.0/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.0.0/search/all_0.js b/doc/v1.0.0/search/all_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.0.0/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.0/search/all_1.js b/doc/v1.0.0/search/all_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.0.0/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.0/search/all_2.js b/doc/v1.0.0/search/all_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.0.0/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.0/search/all_3.js b/doc/v1.0.0/search/all_3.js new file mode 100644 index 0000000..373b266 --- /dev/null +++ b/doc/v1.0.0/search/all_3.js @@ -0,0 +1,46 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fsubscribe_29',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_30',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_31',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_32',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_33',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_34',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_35',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_36',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_37',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_38',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_39',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_40',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_41',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_42',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.0/search/all_4.js b/doc/v1.0.0/search/all_4.js new file mode 100644 index 0000000..32d8d9a --- /dev/null +++ b/doc/v1.0.0/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['liveness_20tracking_1',['Liveness Tracking',['../index.html#liveness',1,'']]] +]; diff --git a/doc/v1.0.0/search/all_5.js b/doc/v1.0.0/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/doc/v1.0.0/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/doc/v1.0.0/search/all_6.js b/doc/v1.0.0/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.0.0/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.0.0/search/all_7.js b/doc/v1.0.0/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.0.0/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.0/search/all_8.js b/doc/v1.0.0/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.0.0/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.0.0/search/all_9.js b/doc/v1.0.0/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/doc/v1.0.0/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.0.0/search/all_a.js b/doc/v1.0.0/search/all_a.js new file mode 100644 index 0000000..a57ca9e --- /dev/null +++ b/doc/v1.0.0/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['tracking_2',['Liveness Tracking',['../index.html#liveness',1,'']]], + ['ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.0.0/search/close.svg b/doc/v1.0.0/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.0.0/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.0.0/search/enums_0.js b/doc/v1.0.0/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.0.0/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.0.0/search/enumvalues_0.js b/doc/v1.0.0/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.0.0/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.0.0/search/files_0.js b/doc/v1.0.0/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.0.0/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.0.0/search/functions_0.js b/doc/v1.0.0/search/functions_0.js new file mode 100644 index 0000000..a5cfd79 --- /dev/null +++ b/doc/v1.0.0/search/functions_0.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fsubscribe_20',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_21',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_22',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_23',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_24',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_25',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_26',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_27',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_28',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_29',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_30',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_31',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.0.0/search/mag.svg b/doc/v1.0.0/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.0.0/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.0.0/search/mag_d.svg b/doc/v1.0.0/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.0.0/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.0.0/search/mag_sel.svg b/doc/v1.0.0/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.0.0/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.0.0/search/mag_seld.svg b/doc/v1.0.0/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.0.0/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.0.0/search/pages_0.js b/doc/v1.0.0/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.0.0/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.0/search/pages_1.js b/doc/v1.0.0/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.0.0/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.0/search/pages_2.js b/doc/v1.0.0/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.0.0/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.0/search/pages_3.js b/doc/v1.0.0/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.0.0/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.0/search/search.css b/doc/v1.0.0/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.0.0/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.0.0/search/search.js b/doc/v1.0.0/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.0.0/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/splitbard.png b/doc/v1.0.0/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/sync_off.png b/doc/v1.0.0/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/sync_on.png b/doc/v1.0.0/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/tab_a.png b/doc/v1.0.0/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/tab_ad.png b/doc/v1.0.0/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/tab_s.png b/doc/v1.0.0/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/tab_sd.png b/doc/v1.0.0/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.0.0/tabs.css b/doc/v1.0.0/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.0.0/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.0.1/bc_s.png b/doc/v1.0.1/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/bc_sd.png b/doc/v1.0.1/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/closed.png b/doc/v1.0.1/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.0.1/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..294a782 --- /dev/null +++ b/doc/v1.0.1/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.0.1/doc.svg b/doc/v1.0.1/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.0.1/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.0.1/docd.svg b/doc/v1.0.1/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.0.1/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.0.1/doxygen.css b/doc/v1.0.1/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.0.1/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.0.1/doxygen.svg b/doc/v1.0.1/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.0.1/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.0.1/dynsections.js b/doc/v1.0.1/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.0.1/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.0.1/files.html b/doc/v1.0.1/files.html new file mode 100644 index 0000000..20362ba --- /dev/null +++ b/doc/v1.0.1/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.0.1/folderclosed.svg b/doc/v1.0.1/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.0.1/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.0.1/folderclosedd.svg b/doc/v1.0.1/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.0.1/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.0.1/folderopen.svg b/doc/v1.0.1/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.0.1/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.0.1/folderopend.svg b/doc/v1.0.1/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.0.1/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.0.1/globals.html b/doc/v1.0.1/globals.html new file mode 100644 index 0000000..74942d1 --- /dev/null +++ b/doc/v1.0.1/globals.html @@ -0,0 +1,120 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.0.1/globals_enum.html b/doc/v1.0.1/globals_enum.html new file mode 100644 index 0000000..aaa4117 --- /dev/null +++ b/doc/v1.0.1/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.0.1/globals_eval.html b/doc/v1.0.1/globals_eval.html new file mode 100644 index 0000000..6d3515a --- /dev/null +++ b/doc/v1.0.1/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.0.1/globals_func.html b/doc/v1.0.1/globals_func.html new file mode 100644 index 0000000..491b6a2 --- /dev/null +++ b/doc/v1.0.1/globals_func.html @@ -0,0 +1,114 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.0.1/globals_type.html b/doc/v1.0.1/globals_type.html new file mode 100644 index 0000000..99f59d5 --- /dev/null +++ b/doc/v1.0.1/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.0.1/index.html b/doc/v1.0.1/index.html new file mode 100644 index 0000000..ed8afe6 --- /dev/null +++ b/doc/v1.0.1/index.html @@ -0,0 +1,176 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.0 [API]
    +
    +1.0.1 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For simplicity, the library implementing this API is referred to as libpaf, although there might be other implementations as well.

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with a string value.

    +

    In case the transport protocol uses TLS, three optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888"
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the certificate-related configuration), but in the newline-separated format:

    "tls:1.2.3.4:4444"
    +
    "tls:5.6.7.8:8888"
    +
    "ux:foo"
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Service TTL

    +

    A service publish via the library has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, beforing the paf_publish() call. The TTL must be an non-negative integer.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.0.1/jquery.js b/doc/v1.0.1/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.0.1/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.0.1/menu.js b/doc/v1.0.1/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.0.1/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.0.1/menudata.js b/doc/v1.0.1/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.0.1/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.0.1/minus.svg b/doc/v1.0.1/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.0.1/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.0.1/minusd.svg b/doc/v1.0.1/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.0.1/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.0.1/nav_f.png b/doc/v1.0.1/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/nav_fd.png b/doc/v1.0.1/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/nav_g.png b/doc/v1.0.1/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/open.png b/doc/v1.0.1/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes has been commited in the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not event be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.0.1/paf_8h_source.html b/doc/v1.0.1/paf_8h_source.html new file mode 100644 index 0000000..154b337 --- /dev/null +++ b/doc/v1.0.1/paf_8h_source.html @@ -0,0 +1,152 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    189#include <stdint.h>
    +
    190#include <sys/types.h>
    +
    191
    +
    192#include <paf_props.h>
    +
    193#include <paf_match.h>
    +
    194#include <paf_err.h>
    +
    195
    +
    196struct paf_context;
    +
    197
    +
    217struct paf_context *paf_attach(const char *domain_name);
    +
    218
    +
    240int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    241
    +
    269int paf_modify(struct paf_context *context, int64_t service_id,
    +
    270 const struct paf_props *props);
    +
    271
    +
    290void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    291
    +
    328int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    329 paf_match_cb match_cb, void *user);
    +
    330
    +
    343void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    344
    +
    370int paf_fd(struct paf_context *context);
    +
    371
    +
    406int paf_process(struct paf_context *context);
    +
    407
    +
    431void paf_detach(struct paf_context *context);
    +
    432
    +
    447void paf_close(struct paf_context *context);
    +
    448
    +
    474char *paf_filter_escape(const char *s);
    +
    475
    +
    476#ifdef __cplusplus
    +
    477}
    +
    478#endif
    +
    479#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.0.1/paf__err_8h_source.html b/doc/v1.0.1/paf__err_8h_source.html new file mode 100644 index 0000000..c6eec94 --- /dev/null +++ b/doc/v1.0.1/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.0.1/paf__match_8h.html b/doc/v1.0.1/paf__match_8h.html new file mode 100644 index 0000000..a9014d4 --- /dev/null +++ b/doc/v1.0.1/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.0.1/paf__match_8h_source.html b/doc/v1.0.1/paf__match_8h_source.html new file mode 100644 index 0000000..44c5075 --- /dev/null +++ b/doc/v1.0.1/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.0.1/paf__props_8h.html b/doc/v1.0.1/paf__props_8h.html new file mode 100644 index 0000000..ca7503c --- /dev/null +++ b/doc/v1.0.1/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.0.1/paf__props_8h_source.html b/doc/v1.0.1/paf__props_8h_source.html new file mode 100644 index 0000000..16373b9 --- /dev/null +++ b/doc/v1.0.1/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.0.1/paf__value_8h.html b/doc/v1.0.1/paf__value_8h.html new file mode 100644 index 0000000..94ed6b2 --- /dev/null +++ b/doc/v1.0.1/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.0.1/paf__value_8h_source.html b/doc/v1.0.1/paf__value_8h_source.html new file mode 100644 index 0000000..d4754bf --- /dev/null +++ b/doc/v1.0.1/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.0.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.0.1/plus.svg b/doc/v1.0.1/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.0.1/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.0.1/plusd.svg b/doc/v1.0.1/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.0.1/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.0.1/search/all_0.js b/doc/v1.0.1/search/all_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.0.1/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.1/search/all_1.js b/doc/v1.0.1/search/all_1.js new file mode 100644 index 0000000..e937f8c --- /dev/null +++ b/doc/v1.0.1/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_mapping',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.0.1/search/all_2.js b/doc/v1.0.1/search/all_2.js new file mode 100644 index 0000000..ab1fb58 --- /dev/null +++ b/doc/v1.0.1/search/all_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['domain_20configuration_1',['Domain Configuration',['../index.html#domain_mapping',1,'']]], + ['domain_20file_20rescan_2',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_3',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.0.1/search/all_3.js b/doc/v1.0.1/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.0.1/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.0.1/search/all_4.js b/doc/v1.0.1/search/all_4.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.0.1/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.1/search/all_5.js b/doc/v1.0.1/search/all_5.js new file mode 100644 index 0000000..26e5292 --- /dev/null +++ b/doc/v1.0.1/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]] +]; diff --git a/doc/v1.0.1/search/all_6.js b/doc/v1.0.1/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.0.1/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.0.1/search/all_7.js b/doc/v1.0.1/search/all_7.js new file mode 100644 index 0000000..373b266 --- /dev/null +++ b/doc/v1.0.1/search/all_7.js @@ -0,0 +1,46 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fsubscribe_29',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_30',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_31',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_32',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_33',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_34',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_35',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_36',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_37',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_38',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_39',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_40',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_41',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_42',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.1/search/all_8.js b/doc/v1.0.1/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.0.1/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.0.1/search/all_9.js b/doc/v1.0.1/search/all_9.js new file mode 100644 index 0000000..7787f7b --- /dev/null +++ b/doc/v1.0.1/search/all_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['service_20discovery_20domains_1',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.0.1/search/all_a.js b/doc/v1.0.1/search/all_a.js new file mode 100644 index 0000000..7969246 --- /dev/null +++ b/doc/v1.0.1/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.0.1/search/close.svg b/doc/v1.0.1/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.0.1/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.0.1/search/enums_0.js b/doc/v1.0.1/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.0.1/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.0.1/search/enumvalues_0.js b/doc/v1.0.1/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.0.1/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.0.1/search/files_0.js b/doc/v1.0.1/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.0.1/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.0.1/search/functions_0.js b/doc/v1.0.1/search/functions_0.js new file mode 100644 index 0000000..a5cfd79 --- /dev/null +++ b/doc/v1.0.1/search/functions_0.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fsubscribe_20',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_21',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_22',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_23',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_24',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_25',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_26',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_27',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_28',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_29',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_30',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_31',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.0.1/search/mag.svg b/doc/v1.0.1/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.0.1/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.0.1/search/mag_d.svg b/doc/v1.0.1/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.0.1/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.0.1/search/mag_sel.svg b/doc/v1.0.1/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.0.1/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.0.1/search/mag_seld.svg b/doc/v1.0.1/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.0.1/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.0.1/search/pages_0.js b/doc/v1.0.1/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.0.1/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.1/search/pages_1.js b/doc/v1.0.1/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.0.1/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.1/search/pages_2.js b/doc/v1.0.1/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.0.1/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.1/search/pages_3.js b/doc/v1.0.1/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.0.1/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.0.1/search/search.css b/doc/v1.0.1/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.0.1/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.0.1/search/search.js b/doc/v1.0.1/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.0.1/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/splitbard.png b/doc/v1.0.1/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/sync_off.png b/doc/v1.0.1/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/sync_on.png b/doc/v1.0.1/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/tab_a.png b/doc/v1.0.1/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/tab_ad.png b/doc/v1.0.1/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/tab_s.png b/doc/v1.0.1/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/tab_sd.png b/doc/v1.0.1/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.0.1/tabs.css b/doc/v1.0.1/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.0.1/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.0/bc_s.png b/doc/v1.1.0/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/bc_sd.png b/doc/v1.1.0/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/closed.png b/doc/v1.1.0/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.0/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..ef05419 --- /dev/null +++ b/doc/v1.1.0/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.0/doc.svg b/doc/v1.1.0/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.0/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.0/docd.svg b/doc/v1.1.0/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.0/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.0/doxygen.css b/doc/v1.1.0/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.0/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.0/doxygen.svg b/doc/v1.1.0/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.0/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.0/dynsections.js b/doc/v1.1.0/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.0/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.0/files.html b/doc/v1.1.0/files.html new file mode 100644 index 0000000..9ae3045 --- /dev/null +++ b/doc/v1.1.0/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.0/folderclosed.svg b/doc/v1.1.0/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.0/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.0/folderclosedd.svg b/doc/v1.1.0/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.0/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.0/folderopen.svg b/doc/v1.1.0/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.0/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.0/folderopend.svg b/doc/v1.1.0/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.0/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.0/globals.html b/doc/v1.1.0/globals.html new file mode 100644 index 0000000..9b4c075 --- /dev/null +++ b/doc/v1.1.0/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.0/globals_enum.html b/doc/v1.1.0/globals_enum.html new file mode 100644 index 0000000..ec628fd --- /dev/null +++ b/doc/v1.1.0/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.0/globals_eval.html b/doc/v1.1.0/globals_eval.html new file mode 100644 index 0000000..3a492d3 --- /dev/null +++ b/doc/v1.1.0/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.0/globals_func.html b/doc/v1.1.0/globals_func.html new file mode 100644 index 0000000..5d6dba3 --- /dev/null +++ b/doc/v1.1.0/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.0/globals_type.html b/doc/v1.1.0/globals_type.html new file mode 100644 index 0000000..7ebb9f2 --- /dev/null +++ b/doc/v1.1.0/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.0/index.html b/doc/v1.1.0/index.html new file mode 100644 index 0000000..9121028 --- /dev/null +++ b/doc/v1.1.0/index.html @@ -0,0 +1,177 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.0 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For simplicity, the library implementing this API is referred to as libpaf, although there might be other implementations as well.

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with a string value.

    +

    In case the transport protocol uses TLS, three optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888"
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the certificate-related configuration), but in the newline-separated format:

    "tls:1.2.3.4:4444"
    +
    "tls:5.6.7.8:8888"
    +
    "ux:foo"
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Service TTL

    +

    A service publish using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.0/jquery.js b/doc/v1.1.0/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.0/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.0/menu.js b/doc/v1.1.0/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.0/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.0/menudata.js b/doc/v1.1.0/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.0/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.0/minus.svg b/doc/v1.1.0/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.0/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.0/minusd.svg b/doc/v1.1.0/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.0/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.0/nav_f.png b/doc/v1.1.0/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/nav_fd.png b/doc/v1.1.0/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/nav_g.png b/doc/v1.1.0/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/open.png b/doc/v1.1.0/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.0/paf_8h_source.html b/doc/v1.1.0/paf_8h_source.html new file mode 100644 index 0000000..ead1c85 --- /dev/null +++ b/doc/v1.1.0/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    191#include <stdint.h>
    +
    192#include <sys/types.h>
    +
    193
    +
    194#include <paf_props.h>
    +
    195#include <paf_match.h>
    +
    196#include <paf_err.h>
    +
    197
    +
    198struct paf_context;
    +
    199
    +
    219struct paf_context *paf_attach(const char *domain_name);
    +
    220
    +
    242int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    243
    +
    271int paf_modify(struct paf_context *context, int64_t service_id,
    +
    272 const struct paf_props *props);
    +
    273
    +
    292void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    293
    +
    312void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    313
    +
    350int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    351 paf_match_cb match_cb, void *user);
    +
    352
    +
    365void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    366
    +
    392int paf_fd(struct paf_context *context);
    +
    393
    +
    428int paf_process(struct paf_context *context);
    +
    429
    +
    453void paf_detach(struct paf_context *context);
    +
    454
    +
    469void paf_close(struct paf_context *context);
    +
    470
    +
    496char *paf_filter_escape(const char *s);
    +
    497
    +
    498#ifdef __cplusplus
    +
    499}
    +
    500#endif
    +
    501#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.0/paf__err_8h_source.html b/doc/v1.1.0/paf__err_8h_source.html new file mode 100644 index 0000000..0156a14 --- /dev/null +++ b/doc/v1.1.0/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.0/paf__match_8h.html b/doc/v1.1.0/paf__match_8h.html new file mode 100644 index 0000000..522738c --- /dev/null +++ b/doc/v1.1.0/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.0/paf__match_8h_source.html b/doc/v1.1.0/paf__match_8h_source.html new file mode 100644 index 0000000..3242889 --- /dev/null +++ b/doc/v1.1.0/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.0/paf__props_8h.html b/doc/v1.1.0/paf__props_8h.html new file mode 100644 index 0000000..eab8e9d --- /dev/null +++ b/doc/v1.1.0/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.0/paf__props_8h_source.html b/doc/v1.1.0/paf__props_8h_source.html new file mode 100644 index 0000000..4c914bc --- /dev/null +++ b/doc/v1.1.0/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.0/paf__value_8h.html b/doc/v1.1.0/paf__value_8h.html new file mode 100644 index 0000000..f315e1d --- /dev/null +++ b/doc/v1.1.0/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.0/paf__value_8h_source.html b/doc/v1.1.0/paf__value_8h_source.html new file mode 100644 index 0000000..e40d818 --- /dev/null +++ b/doc/v1.1.0/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.0 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.0/plus.svg b/doc/v1.1.0/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.0/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.0/plusd.svg b/doc/v1.1.0/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.0/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.0/search/all_0.js b/doc/v1.1.0/search/all_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.0/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.0/search/all_1.js b/doc/v1.1.0/search/all_1.js new file mode 100644 index 0000000..e937f8c --- /dev/null +++ b/doc/v1.1.0/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_mapping',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.0/search/all_2.js b/doc/v1.1.0/search/all_2.js new file mode 100644 index 0000000..ab1fb58 --- /dev/null +++ b/doc/v1.1.0/search/all_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['domain_20configuration_1',['Domain Configuration',['../index.html#domain_mapping',1,'']]], + ['domain_20file_20rescan_2',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_3',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.0/search/all_3.js b/doc/v1.1.0/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.0/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.0/search/all_4.js b/doc/v1.1.0/search/all_4.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.0/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.0/search/all_5.js b/doc/v1.1.0/search/all_5.js new file mode 100644 index 0000000..26e5292 --- /dev/null +++ b/doc/v1.1.0/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]] +]; diff --git a/doc/v1.1.0/search/all_6.js b/doc/v1.1.0/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.0/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.0/search/all_7.js b/doc/v1.1.0/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.0/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.0/search/all_8.js b/doc/v1.1.0/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.0/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.0/search/all_9.js b/doc/v1.1.0/search/all_9.js new file mode 100644 index 0000000..7787f7b --- /dev/null +++ b/doc/v1.1.0/search/all_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['service_20discovery_20domains_1',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.0/search/all_a.js b/doc/v1.1.0/search/all_a.js new file mode 100644 index 0000000..7969246 --- /dev/null +++ b/doc/v1.1.0/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.0/search/close.svg b/doc/v1.1.0/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.0/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.0/search/enums_0.js b/doc/v1.1.0/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.0/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.0/search/enumvalues_0.js b/doc/v1.1.0/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.0/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.0/search/files_0.js b/doc/v1.1.0/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.0/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.0/search/functions_0.js b/doc/v1.1.0/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.0/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.0/search/mag.svg b/doc/v1.1.0/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.0/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.0/search/mag_d.svg b/doc/v1.1.0/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.0/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.0/search/mag_sel.svg b/doc/v1.1.0/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.0/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.0/search/mag_seld.svg b/doc/v1.1.0/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.0/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.0/search/pages_0.js b/doc/v1.1.0/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.0/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.0/search/pages_1.js b/doc/v1.1.0/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.0/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.0/search/pages_2.js b/doc/v1.1.0/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.0/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.0/search/pages_3.js b/doc/v1.1.0/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.0/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.0/search/search.css b/doc/v1.1.0/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.0/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.0/search/search.js b/doc/v1.1.0/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.0/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/splitbard.png b/doc/v1.1.0/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/sync_off.png b/doc/v1.1.0/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/sync_on.png b/doc/v1.1.0/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/tab_a.png b/doc/v1.1.0/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/tab_ad.png b/doc/v1.1.0/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/tab_s.png b/doc/v1.1.0/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/tab_sd.png b/doc/v1.1.0/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.0/tabs.css b/doc/v1.1.0/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.0/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.1/bc_s.png b/doc/v1.1.1/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/bc_sd.png b/doc/v1.1.1/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/closed.png b/doc/v1.1.1/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.1/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..cda7a64 --- /dev/null +++ b/doc/v1.1.1/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.1/doc.svg b/doc/v1.1.1/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.1/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.1/docd.svg b/doc/v1.1.1/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.1/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.1/doxygen.css b/doc/v1.1.1/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.1/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.1/doxygen.svg b/doc/v1.1.1/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.1/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.1/dynsections.js b/doc/v1.1.1/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.1/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.1/files.html b/doc/v1.1.1/files.html new file mode 100644 index 0000000..d01495e --- /dev/null +++ b/doc/v1.1.1/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.1/folderclosed.svg b/doc/v1.1.1/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.1/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.1/folderclosedd.svg b/doc/v1.1.1/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.1/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.1/folderopen.svg b/doc/v1.1.1/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.1/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.1/folderopend.svg b/doc/v1.1.1/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.1/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.1/globals.html b/doc/v1.1.1/globals.html new file mode 100644 index 0000000..f146ff7 --- /dev/null +++ b/doc/v1.1.1/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.1/globals_enum.html b/doc/v1.1.1/globals_enum.html new file mode 100644 index 0000000..2712351 --- /dev/null +++ b/doc/v1.1.1/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.1/globals_eval.html b/doc/v1.1.1/globals_eval.html new file mode 100644 index 0000000..7d7ff7f --- /dev/null +++ b/doc/v1.1.1/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.1/globals_func.html b/doc/v1.1.1/globals_func.html new file mode 100644 index 0000000..12129ee --- /dev/null +++ b/doc/v1.1.1/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.1/globals_type.html b/doc/v1.1.1/globals_type.html new file mode 100644 index 0000000..e52f173 --- /dev/null +++ b/doc/v1.1.1/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.1/index.html b/doc/v1.1.1/index.html new file mode 100644 index 0000000..d4d52fb --- /dev/null +++ b/doc/v1.1.1/index.html @@ -0,0 +1,183 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.1 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For simplicity, the library implementing this API is referred to as libpaf, although there might be other implementations as well.

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, three optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam"
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Service TTL

    +

    A service publish using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.1/jquery.js b/doc/v1.1.1/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.1/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.1/menu.js b/doc/v1.1.1/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.1/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.1/menudata.js b/doc/v1.1.1/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.1/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.1/minus.svg b/doc/v1.1.1/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.1/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.1/minusd.svg b/doc/v1.1.1/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.1/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.1/nav_f.png b/doc/v1.1.1/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/nav_fd.png b/doc/v1.1.1/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/nav_g.png b/doc/v1.1.1/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/open.png b/doc/v1.1.1/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.1/paf_8h_source.html b/doc/v1.1.1/paf_8h_source.html new file mode 100644 index 0000000..22a048a --- /dev/null +++ b/doc/v1.1.1/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    205#include <stdint.h>
    +
    206#include <sys/types.h>
    +
    207
    +
    208#include <paf_props.h>
    +
    209#include <paf_match.h>
    +
    210#include <paf_err.h>
    +
    211
    +
    212struct paf_context;
    +
    213
    +
    233struct paf_context *paf_attach(const char *domain_name);
    +
    234
    +
    256int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    257
    +
    285int paf_modify(struct paf_context *context, int64_t service_id,
    +
    286 const struct paf_props *props);
    +
    287
    +
    306void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    307
    +
    326void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    327
    +
    364int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    365 paf_match_cb match_cb, void *user);
    +
    366
    +
    379void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    380
    +
    406int paf_fd(struct paf_context *context);
    +
    407
    +
    442int paf_process(struct paf_context *context);
    +
    443
    +
    467void paf_detach(struct paf_context *context);
    +
    468
    +
    483void paf_close(struct paf_context *context);
    +
    484
    +
    510char *paf_filter_escape(const char *s);
    +
    511
    +
    512#ifdef __cplusplus
    +
    513}
    +
    514#endif
    +
    515#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.1/paf__err_8h_source.html b/doc/v1.1.1/paf__err_8h_source.html new file mode 100644 index 0000000..0bd6299 --- /dev/null +++ b/doc/v1.1.1/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.1/paf__match_8h.html b/doc/v1.1.1/paf__match_8h.html new file mode 100644 index 0000000..2f5375f --- /dev/null +++ b/doc/v1.1.1/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.1/paf__match_8h_source.html b/doc/v1.1.1/paf__match_8h_source.html new file mode 100644 index 0000000..6bb46fc --- /dev/null +++ b/doc/v1.1.1/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.1/paf__props_8h.html b/doc/v1.1.1/paf__props_8h.html new file mode 100644 index 0000000..8444c90 --- /dev/null +++ b/doc/v1.1.1/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.1/paf__props_8h_source.html b/doc/v1.1.1/paf__props_8h_source.html new file mode 100644 index 0000000..31f0ba8 --- /dev/null +++ b/doc/v1.1.1/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.1/paf__value_8h.html b/doc/v1.1.1/paf__value_8h.html new file mode 100644 index 0000000..8eac8f4 --- /dev/null +++ b/doc/v1.1.1/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.1/paf__value_8h_source.html b/doc/v1.1.1/paf__value_8h_source.html new file mode 100644 index 0000000..6b4a65d --- /dev/null +++ b/doc/v1.1.1/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.1 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.1/plus.svg b/doc/v1.1.1/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.1/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.1/plusd.svg b/doc/v1.1.1/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.1/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.1/search/all_0.js b/doc/v1.1.1/search/all_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.1/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.1/search/all_1.js b/doc/v1.1.1/search/all_1.js new file mode 100644 index 0000000..e937f8c --- /dev/null +++ b/doc/v1.1.1/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_mapping',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.1/search/all_2.js b/doc/v1.1.1/search/all_2.js new file mode 100644 index 0000000..ab1fb58 --- /dev/null +++ b/doc/v1.1.1/search/all_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['domain_20configuration_1',['Domain Configuration',['../index.html#domain_mapping',1,'']]], + ['domain_20file_20rescan_2',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_3',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.1/search/all_3.js b/doc/v1.1.1/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.1/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.1/search/all_4.js b/doc/v1.1.1/search/all_4.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.1/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.1/search/all_5.js b/doc/v1.1.1/search/all_5.js new file mode 100644 index 0000000..26e5292 --- /dev/null +++ b/doc/v1.1.1/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]] +]; diff --git a/doc/v1.1.1/search/all_6.js b/doc/v1.1.1/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.1/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.1/search/all_7.js b/doc/v1.1.1/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.1/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.1/search/all_8.js b/doc/v1.1.1/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.1/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.1/search/all_9.js b/doc/v1.1.1/search/all_9.js new file mode 100644 index 0000000..7787f7b --- /dev/null +++ b/doc/v1.1.1/search/all_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['service_20discovery_20domains_1',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.1/search/all_a.js b/doc/v1.1.1/search/all_a.js new file mode 100644 index 0000000..7969246 --- /dev/null +++ b/doc/v1.1.1/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.1/search/close.svg b/doc/v1.1.1/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.1/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.1/search/enums_0.js b/doc/v1.1.1/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.1/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.1/search/enumvalues_0.js b/doc/v1.1.1/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.1/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.1/search/files_0.js b/doc/v1.1.1/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.1/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.1/search/functions_0.js b/doc/v1.1.1/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.1/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.1/search/mag.svg b/doc/v1.1.1/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.1/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.1/search/mag_d.svg b/doc/v1.1.1/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.1/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.1/search/mag_sel.svg b/doc/v1.1.1/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.1/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.1/search/mag_seld.svg b/doc/v1.1.1/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.1/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.1/search/pages_0.js b/doc/v1.1.1/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.1/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.1/search/pages_1.js b/doc/v1.1.1/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.1/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.1/search/pages_2.js b/doc/v1.1.1/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.1/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.1/search/pages_3.js b/doc/v1.1.1/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.1/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.1/search/search.css b/doc/v1.1.1/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.1/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.1/search/search.js b/doc/v1.1.1/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.1/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/splitbard.png b/doc/v1.1.1/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/sync_off.png b/doc/v1.1.1/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/sync_on.png b/doc/v1.1.1/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/tab_a.png b/doc/v1.1.1/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/tab_ad.png b/doc/v1.1.1/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/tab_s.png b/doc/v1.1.1/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/tab_sd.png b/doc/v1.1.1/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.1/tabs.css b/doc/v1.1.1/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.1/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.10/bc_s.png b/doc/v1.1.10/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/bc_sd.png b/doc/v1.1.10/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/closed.png b/doc/v1.1.10/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.10/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..4316958 --- /dev/null +++ b/doc/v1.1.10/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.10/doc.svg b/doc/v1.1.10/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.10/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.10/docd.svg b/doc/v1.1.10/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.10/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.10/doxygen.css b/doc/v1.1.10/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.10/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.10/doxygen.svg b/doc/v1.1.10/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.10/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.10/dynsections.js b/doc/v1.1.10/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.10/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.10/files.html b/doc/v1.1.10/files.html new file mode 100644 index 0000000..9440f67 --- /dev/null +++ b/doc/v1.1.10/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.10/folderclosed.svg b/doc/v1.1.10/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.10/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.10/folderclosedd.svg b/doc/v1.1.10/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.10/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.10/folderopen.svg b/doc/v1.1.10/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.10/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.10/folderopend.svg b/doc/v1.1.10/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.10/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.10/globals.html b/doc/v1.1.10/globals.html new file mode 100644 index 0000000..bac4c16 --- /dev/null +++ b/doc/v1.1.10/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.10/globals_enum.html b/doc/v1.1.10/globals_enum.html new file mode 100644 index 0000000..36f0a1b --- /dev/null +++ b/doc/v1.1.10/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.10/globals_eval.html b/doc/v1.1.10/globals_eval.html new file mode 100644 index 0000000..8aeaab5 --- /dev/null +++ b/doc/v1.1.10/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.10/globals_func.html b/doc/v1.1.10/globals_func.html new file mode 100644 index 0000000..4fd5507 --- /dev/null +++ b/doc/v1.1.10/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.10/globals_type.html b/doc/v1.1.10/globals_type.html new file mode 100644 index 0000000..aca706b --- /dev/null +++ b/doc/v1.1.10/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.10/index.html b/doc/v1.1.10/index.html new file mode 100644 index 0000000..94774e9 --- /dev/null +++ b/doc/v1.1.10/index.html @@ -0,0 +1,213 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.10 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may have a key "minProtocolVersion", used to increase the minimum protocol version advertised as supported by libpaf to that server. If "minProtocolVersion" is set higher than the maximum version suported by libpaf (i.e., > 3), no connections will be initiated to that server.

    +

    A server object may have the key "maxProtocolVersion", used to decrease the maximum protocol version advertised by libpaf. If the "maxProtocolVersion" is set lower than the minimum version supported by libpaf (i.e., < 2), no connections will be initiated to that server.

    +

    If both "minProtocolVersion" and "maxProtocolVersion" are set, "minProtocolVersion" must be equal to or lower than "maxProtocolVersion".

    +

    A server object may have a keys "minIdleTime" or "maxIdleTime" to configure client-side Liveness Tracking, and override the PAF_IDLE_MIN and PAF_IDLE_MAX values and the compile-time defaults (in case the environment variables are not set).

    +

    If both "minIdleTime" and "maxIdleTime" are set, "minIdleTime" must be equal to or lower than "maxIdleTime".

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "minProtocolVersion": 3,
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam",
    +
    "minIdleTime": 10
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    "maxProtocolVersion": 2,
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Liveness Tracking

    +

    On connections where the Pathfinder protocol version 3 is negotiated to be used, libpaf performs server liveness tracking on the level of the Pathfinder protocol.

    +

    On v3 connections, libpaf imposes an upper limit on how long time the remote peer is allowed to remain idle. When maximum idle time is approaching, libpaf will query the server to ensure it is still alive. In case the server also employs liveness checking, any server queries will be treated as a sign of life, and make libpaf post-poned any liveness query.

    +

    The maximum idle time is 30 seconds by default, and may be overriden by setting the PAF_IDLE_MAX environment variable.

    +

    The actual max idle time used may be lower than PAF_IDLE_MAX, in case low-TTL services have been published by the application, or have been matched in one of its subscriptions.

    +

    The actual max idle time will never be set to lower than PAF_IDLE_MIN, which is 4 seconds by default. To protect the server, libpaf will treat PAF_IDLE_MIN set lower than 1 second as set to 1 second.

    +

    On version 2 connections, libpaf depends on the transport protocol (e.g., TCP) for liveness checking.

    +

    On version 3 connections, TCP keepalive is disabled.

    +

    The minimum idle time is also used as an upper bound for the total amount of time the initial transport connection establishment (e.g., TCP three-way handshake and TLS hello) and the Pathfinder protocol-level hello transaction is allowed to take.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service published using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    For a description of how service TTLs work in Pathfinder, please refer to the Pathfinder protocol specification.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.10/jquery.js b/doc/v1.1.10/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.10/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.10/menu.js b/doc/v1.1.10/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.10/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.10/menudata.js b/doc/v1.1.10/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.10/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.10/minus.svg b/doc/v1.1.10/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.10/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.10/minusd.svg b/doc/v1.1.10/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.10/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.10/nav_f.png b/doc/v1.1.10/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/nav_fd.png b/doc/v1.1.10/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/nav_g.png b/doc/v1.1.10/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/open.png b/doc/v1.1.10/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.10/paf_8h_source.html b/doc/v1.1.10/paf_8h_source.html new file mode 100644 index 0000000..115272d --- /dev/null +++ b/doc/v1.1.10/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    301#include <stdint.h>
    +
    302#include <sys/types.h>
    +
    303
    +
    304#include <paf_props.h>
    +
    305#include <paf_match.h>
    +
    306#include <paf_err.h>
    +
    307
    +
    308struct paf_context;
    +
    309
    +
    332struct paf_context *paf_attach(const char *domain_name);
    +
    333
    +
    356int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    357
    +
    385int paf_modify(struct paf_context *context, int64_t service_id,
    +
    386 const struct paf_props *props);
    +
    387
    +
    406void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    407
    +
    426void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    427
    +
    464int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    465 paf_match_cb match_cb, void *user);
    +
    466
    +
    479void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    480
    +
    506int paf_fd(struct paf_context *context);
    +
    507
    +
    542int paf_process(struct paf_context *context);
    +
    543
    +
    567void paf_detach(struct paf_context *context);
    +
    568
    +
    583void paf_close(struct paf_context *context);
    +
    584
    +
    610char *paf_filter_escape(const char *s);
    +
    611
    +
    612#ifdef __cplusplus
    +
    613}
    +
    614#endif
    +
    615#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.10/paf__err_8h_source.html b/doc/v1.1.10/paf__err_8h_source.html new file mode 100644 index 0000000..775418f --- /dev/null +++ b/doc/v1.1.10/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.10/paf__match_8h.html b/doc/v1.1.10/paf__match_8h.html new file mode 100644 index 0000000..cc0f232 --- /dev/null +++ b/doc/v1.1.10/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.10/paf__match_8h_source.html b/doc/v1.1.10/paf__match_8h_source.html new file mode 100644 index 0000000..d6d135e --- /dev/null +++ b/doc/v1.1.10/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.10/paf__props_8h.html b/doc/v1.1.10/paf__props_8h.html new file mode 100644 index 0000000..3a94727 --- /dev/null +++ b/doc/v1.1.10/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.10/paf__props_8h_source.html b/doc/v1.1.10/paf__props_8h_source.html new file mode 100644 index 0000000..d20680a --- /dev/null +++ b/doc/v1.1.10/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.10/paf__value_8h.html b/doc/v1.1.10/paf__value_8h.html new file mode 100644 index 0000000..a22dffc --- /dev/null +++ b/doc/v1.1.10/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.10/paf__value_8h_source.html b/doc/v1.1.10/paf__value_8h_source.html new file mode 100644 index 0000000..697d99a --- /dev/null +++ b/doc/v1.1.10/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.10 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.10/plus.svg b/doc/v1.1.10/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.10/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.10/plusd.svg b/doc/v1.1.10/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.10/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.10/search/all_0.js b/doc/v1.1.10/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/doc/v1.1.10/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.10/search/all_1.js b/doc/v1.1.10/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/doc/v1.1.10/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.10/search/all_2.js b/doc/v1.1.10/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/doc/v1.1.10/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.10/search/all_3.js b/doc/v1.1.10/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.10/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.10/search/all_4.js b/doc/v1.1.10/search/all_4.js new file mode 100644 index 0000000..32d8d9a --- /dev/null +++ b/doc/v1.1.10/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['liveness_20tracking_1',['Liveness Tracking',['../index.html#liveness',1,'']]] +]; diff --git a/doc/v1.1.10/search/all_5.js b/doc/v1.1.10/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/doc/v1.1.10/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/doc/v1.1.10/search/all_6.js b/doc/v1.1.10/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.10/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.10/search/all_7.js b/doc/v1.1.10/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.10/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.10/search/all_8.js b/doc/v1.1.10/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.10/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.10/search/all_9.js b/doc/v1.1.10/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/doc/v1.1.10/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.10/search/all_a.js b/doc/v1.1.10/search/all_a.js new file mode 100644 index 0000000..a57ca9e --- /dev/null +++ b/doc/v1.1.10/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['tracking_2',['Liveness Tracking',['../index.html#liveness',1,'']]], + ['ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.10/search/close.svg b/doc/v1.1.10/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.10/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.10/search/enums_0.js b/doc/v1.1.10/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.10/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.10/search/enumvalues_0.js b/doc/v1.1.10/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.10/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.10/search/files_0.js b/doc/v1.1.10/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.10/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.10/search/functions_0.js b/doc/v1.1.10/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.10/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.10/search/mag.svg b/doc/v1.1.10/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.10/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.10/search/mag_d.svg b/doc/v1.1.10/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.10/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.10/search/mag_sel.svg b/doc/v1.1.10/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.10/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.10/search/mag_seld.svg b/doc/v1.1.10/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.10/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.10/search/pages_0.js b/doc/v1.1.10/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.10/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.10/search/pages_1.js b/doc/v1.1.10/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.10/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.10/search/pages_2.js b/doc/v1.1.10/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.10/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.10/search/pages_3.js b/doc/v1.1.10/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.10/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.10/search/search.css b/doc/v1.1.10/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.10/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.10/search/search.js b/doc/v1.1.10/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.10/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/splitbard.png b/doc/v1.1.10/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/sync_off.png b/doc/v1.1.10/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/sync_on.png b/doc/v1.1.10/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/tab_a.png b/doc/v1.1.10/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/tab_ad.png b/doc/v1.1.10/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/tab_s.png b/doc/v1.1.10/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/tab_sd.png b/doc/v1.1.10/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.10/tabs.css b/doc/v1.1.10/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.10/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.11/bc_s.png b/doc/v1.1.11/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/bc_sd.png b/doc/v1.1.11/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/closed.png b/doc/v1.1.11/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.11/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..89260e6 --- /dev/null +++ b/doc/v1.1.11/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.11/doc.svg b/doc/v1.1.11/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.11/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.11/docd.svg b/doc/v1.1.11/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.11/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.11/doxygen.css b/doc/v1.1.11/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.11/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.11/doxygen.svg b/doc/v1.1.11/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.11/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.11/dynsections.js b/doc/v1.1.11/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.11/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.11/files.html b/doc/v1.1.11/files.html new file mode 100644 index 0000000..6c65113 --- /dev/null +++ b/doc/v1.1.11/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.11/folderclosed.svg b/doc/v1.1.11/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.11/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.11/folderclosedd.svg b/doc/v1.1.11/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.11/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.11/folderopen.svg b/doc/v1.1.11/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.11/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.11/folderopend.svg b/doc/v1.1.11/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.11/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.11/globals.html b/doc/v1.1.11/globals.html new file mode 100644 index 0000000..4ea2396 --- /dev/null +++ b/doc/v1.1.11/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.11/globals_enum.html b/doc/v1.1.11/globals_enum.html new file mode 100644 index 0000000..be1792a --- /dev/null +++ b/doc/v1.1.11/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.11/globals_eval.html b/doc/v1.1.11/globals_eval.html new file mode 100644 index 0000000..8dcd933 --- /dev/null +++ b/doc/v1.1.11/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.11/globals_func.html b/doc/v1.1.11/globals_func.html new file mode 100644 index 0000000..05298b3 --- /dev/null +++ b/doc/v1.1.11/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.11/globals_type.html b/doc/v1.1.11/globals_type.html new file mode 100644 index 0000000..f59a73f --- /dev/null +++ b/doc/v1.1.11/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.11/index.html b/doc/v1.1.11/index.html new file mode 100644 index 0000000..1ac14c0 --- /dev/null +++ b/doc/v1.1.11/index.html @@ -0,0 +1,213 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.11 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may have a key "minProtocolVersion", used to increase the minimum protocol version advertised as supported by libpaf to that server. If "minProtocolVersion" is set higher than the maximum version suported by libpaf (i.e., > 3), no connections will be initiated to that server.

    +

    A server object may have the key "maxProtocolVersion", used to decrease the maximum protocol version advertised by libpaf. If the "maxProtocolVersion" is set lower than the minimum version supported by libpaf (i.e., < 2), no connections will be initiated to that server.

    +

    If both "minProtocolVersion" and "maxProtocolVersion" are set, "minProtocolVersion" must be equal to or lower than "maxProtocolVersion".

    +

    A server object may have a keys "minIdleTime" or "maxIdleTime" to configure client-side Liveness Tracking, and override the PAF_IDLE_MIN and PAF_IDLE_MAX values and the compile-time defaults (in case the environment variables are not set).

    +

    If both "minIdleTime" and "maxIdleTime" are set, "minIdleTime" must be equal to or lower than "maxIdleTime".

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "minProtocolVersion": 3,
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam",
    +
    "minIdleTime": 10
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    "maxProtocolVersion": 2,
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Liveness Tracking

    +

    On connections where the Pathfinder protocol version 3 is negotiated to be used, libpaf performs server liveness tracking on the level of the Pathfinder protocol.

    +

    On v3 connections, libpaf imposes an upper limit on how long time the remote peer is allowed to remain idle. When maximum idle time is approaching, libpaf will query the server to ensure it is still alive. In case the server also employs liveness checking, any server queries will be treated as a sign of life, and make libpaf post-poned any liveness query.

    +

    The maximum idle time is 30 seconds by default, and may be overriden by setting the PAF_IDLE_MAX environment variable.

    +

    The actual max idle time used may be lower than PAF_IDLE_MAX, in case low-TTL services have been published by the application, or have been matched in one of its subscriptions.

    +

    The actual max idle time will never be set to lower than PAF_IDLE_MIN, which is 4 seconds by default. To protect the server, libpaf will treat PAF_IDLE_MIN set lower than 1 second as set to 1 second.

    +

    On version 2 connections, libpaf depends on the transport protocol (e.g., TCP) for liveness checking.

    +

    On version 3 connections, TCP keepalive is disabled.

    +

    The minimum idle time is also used as an upper bound for the total amount of time the initial transport connection establishment (e.g., TCP three-way handshake and TLS hello) and the Pathfinder protocol-level hello transaction is allowed to take.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service published using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    For a description of how service TTLs work in Pathfinder, please refer to the Pathfinder protocol specification.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.11/jquery.js b/doc/v1.1.11/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.11/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.11/menu.js b/doc/v1.1.11/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.11/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.11/menudata.js b/doc/v1.1.11/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.11/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.11/minus.svg b/doc/v1.1.11/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.11/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.11/minusd.svg b/doc/v1.1.11/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.11/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.11/nav_f.png b/doc/v1.1.11/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/nav_fd.png b/doc/v1.1.11/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/nav_g.png b/doc/v1.1.11/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/open.png b/doc/v1.1.11/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.11/paf_8h_source.html b/doc/v1.1.11/paf_8h_source.html new file mode 100644 index 0000000..f6f6317 --- /dev/null +++ b/doc/v1.1.11/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    301#include <stdint.h>
    +
    302#include <sys/types.h>
    +
    303
    +
    304#include <paf_props.h>
    +
    305#include <paf_match.h>
    +
    306#include <paf_err.h>
    +
    307
    +
    308struct paf_context;
    +
    309
    +
    332struct paf_context *paf_attach(const char *domain_name);
    +
    333
    +
    356int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    357
    +
    385int paf_modify(struct paf_context *context, int64_t service_id,
    +
    386 const struct paf_props *props);
    +
    387
    +
    406void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    407
    +
    426void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    427
    +
    464int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    465 paf_match_cb match_cb, void *user);
    +
    466
    +
    479void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    480
    +
    506int paf_fd(struct paf_context *context);
    +
    507
    +
    542int paf_process(struct paf_context *context);
    +
    543
    +
    567void paf_detach(struct paf_context *context);
    +
    568
    +
    583void paf_close(struct paf_context *context);
    +
    584
    +
    610char *paf_filter_escape(const char *s);
    +
    611
    +
    612#ifdef __cplusplus
    +
    613}
    +
    614#endif
    +
    615#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.11/paf__err_8h_source.html b/doc/v1.1.11/paf__err_8h_source.html new file mode 100644 index 0000000..4c9b174 --- /dev/null +++ b/doc/v1.1.11/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.11/paf__match_8h.html b/doc/v1.1.11/paf__match_8h.html new file mode 100644 index 0000000..70ab42a --- /dev/null +++ b/doc/v1.1.11/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.11/paf__match_8h_source.html b/doc/v1.1.11/paf__match_8h_source.html new file mode 100644 index 0000000..82435ba --- /dev/null +++ b/doc/v1.1.11/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.11/paf__props_8h.html b/doc/v1.1.11/paf__props_8h.html new file mode 100644 index 0000000..066e4e0 --- /dev/null +++ b/doc/v1.1.11/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.11/paf__props_8h_source.html b/doc/v1.1.11/paf__props_8h_source.html new file mode 100644 index 0000000..298c23a --- /dev/null +++ b/doc/v1.1.11/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.11/paf__value_8h.html b/doc/v1.1.11/paf__value_8h.html new file mode 100644 index 0000000..caf006b --- /dev/null +++ b/doc/v1.1.11/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.11/paf__value_8h_source.html b/doc/v1.1.11/paf__value_8h_source.html new file mode 100644 index 0000000..8c872f5 --- /dev/null +++ b/doc/v1.1.11/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.11 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.11/plus.svg b/doc/v1.1.11/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.11/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.11/plusd.svg b/doc/v1.1.11/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.11/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.11/search/all_0.js b/doc/v1.1.11/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/doc/v1.1.11/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.11/search/all_1.js b/doc/v1.1.11/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/doc/v1.1.11/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.11/search/all_2.js b/doc/v1.1.11/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/doc/v1.1.11/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.11/search/all_3.js b/doc/v1.1.11/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.11/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.11/search/all_4.js b/doc/v1.1.11/search/all_4.js new file mode 100644 index 0000000..32d8d9a --- /dev/null +++ b/doc/v1.1.11/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['liveness_20tracking_1',['Liveness Tracking',['../index.html#liveness',1,'']]] +]; diff --git a/doc/v1.1.11/search/all_5.js b/doc/v1.1.11/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/doc/v1.1.11/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/doc/v1.1.11/search/all_6.js b/doc/v1.1.11/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.11/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.11/search/all_7.js b/doc/v1.1.11/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.11/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.11/search/all_8.js b/doc/v1.1.11/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.11/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.11/search/all_9.js b/doc/v1.1.11/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/doc/v1.1.11/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.11/search/all_a.js b/doc/v1.1.11/search/all_a.js new file mode 100644 index 0000000..a57ca9e --- /dev/null +++ b/doc/v1.1.11/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['tracking_2',['Liveness Tracking',['../index.html#liveness',1,'']]], + ['ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.11/search/close.svg b/doc/v1.1.11/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.11/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.11/search/enums_0.js b/doc/v1.1.11/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.11/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.11/search/enumvalues_0.js b/doc/v1.1.11/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.11/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.11/search/files_0.js b/doc/v1.1.11/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.11/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.11/search/functions_0.js b/doc/v1.1.11/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.11/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.11/search/mag.svg b/doc/v1.1.11/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.11/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.11/search/mag_d.svg b/doc/v1.1.11/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.11/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.11/search/mag_sel.svg b/doc/v1.1.11/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.11/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.11/search/mag_seld.svg b/doc/v1.1.11/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.11/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.11/search/pages_0.js b/doc/v1.1.11/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.11/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.11/search/pages_1.js b/doc/v1.1.11/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.11/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.11/search/pages_2.js b/doc/v1.1.11/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.11/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.11/search/pages_3.js b/doc/v1.1.11/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.11/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.11/search/search.css b/doc/v1.1.11/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.11/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.11/search/search.js b/doc/v1.1.11/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.11/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/splitbard.png b/doc/v1.1.11/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/sync_off.png b/doc/v1.1.11/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/sync_on.png b/doc/v1.1.11/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/tab_a.png b/doc/v1.1.11/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/tab_ad.png b/doc/v1.1.11/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/tab_s.png b/doc/v1.1.11/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/tab_sd.png b/doc/v1.1.11/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.11/tabs.css b/doc/v1.1.11/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.11/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.12/bc_s.png b/doc/v1.1.12/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/bc_sd.png b/doc/v1.1.12/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/closed.png b/doc/v1.1.12/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.12/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..ebc328f --- /dev/null +++ b/doc/v1.1.12/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.12/doc.svg b/doc/v1.1.12/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.12/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.12/docd.svg b/doc/v1.1.12/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.12/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.12/doxygen.css b/doc/v1.1.12/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.12/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.12/doxygen.svg b/doc/v1.1.12/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.12/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.12/dynsections.js b/doc/v1.1.12/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.12/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.12/files.html b/doc/v1.1.12/files.html new file mode 100644 index 0000000..d183ea9 --- /dev/null +++ b/doc/v1.1.12/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.12/folderclosed.svg b/doc/v1.1.12/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.12/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.12/folderclosedd.svg b/doc/v1.1.12/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.12/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.12/folderopen.svg b/doc/v1.1.12/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.12/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.12/folderopend.svg b/doc/v1.1.12/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.12/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.12/globals.html b/doc/v1.1.12/globals.html new file mode 100644 index 0000000..4951252 --- /dev/null +++ b/doc/v1.1.12/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.12/globals_enum.html b/doc/v1.1.12/globals_enum.html new file mode 100644 index 0000000..c6118a0 --- /dev/null +++ b/doc/v1.1.12/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.12/globals_eval.html b/doc/v1.1.12/globals_eval.html new file mode 100644 index 0000000..f96ecca --- /dev/null +++ b/doc/v1.1.12/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.12/globals_func.html b/doc/v1.1.12/globals_func.html new file mode 100644 index 0000000..de22270 --- /dev/null +++ b/doc/v1.1.12/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.12/globals_type.html b/doc/v1.1.12/globals_type.html new file mode 100644 index 0000000..24bc9b6 --- /dev/null +++ b/doc/v1.1.12/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.12/index.html b/doc/v1.1.12/index.html new file mode 100644 index 0000000..52b1326 --- /dev/null +++ b/doc/v1.1.12/index.html @@ -0,0 +1,213 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.12 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may have a key "minProtocolVersion", used to increase the minimum protocol version advertised as supported by libpaf to that server. If "minProtocolVersion" is set higher than the maximum version suported by libpaf (i.e., > 3), no connections will be initiated to that server.

    +

    A server object may have the key "maxProtocolVersion", used to decrease the maximum protocol version advertised by libpaf. If the "maxProtocolVersion" is set lower than the minimum version supported by libpaf (i.e., < 2), no connections will be initiated to that server.

    +

    If both "minProtocolVersion" and "maxProtocolVersion" are set, "minProtocolVersion" must be equal to or lower than "maxProtocolVersion".

    +

    A server object may have a keys "minIdleTime" or "maxIdleTime" to configure client-side Liveness Tracking, and override the PAF_IDLE_MIN and PAF_IDLE_MAX values and the compile-time defaults (in case the environment variables are not set).

    +

    If both "minIdleTime" and "maxIdleTime" are set, "minIdleTime" must be equal to or lower than "maxIdleTime".

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "minProtocolVersion": 3,
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam",
    +
    "minIdleTime": 10
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    "maxProtocolVersion": 2,
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Liveness Tracking

    +

    On connections where the Pathfinder protocol version 3 is negotiated to be used, libpaf performs server liveness tracking on the level of the Pathfinder protocol.

    +

    On v3 connections, libpaf imposes an upper limit on how long time the remote peer is allowed to remain idle. When maximum idle time is approaching, libpaf will query the server to ensure it is still alive. In case the server also employs liveness checking, any server queries will be treated as a sign of life, and make libpaf post-poned any liveness query.

    +

    The maximum idle time is 30 seconds by default, and may be overriden by setting the PAF_IDLE_MAX environment variable.

    +

    The actual max idle time used may be lower than PAF_IDLE_MAX, in case low-TTL services have been published by the application, or have been matched in one of its subscriptions.

    +

    The actual max idle time will never be set to lower than PAF_IDLE_MIN, which is 4 seconds by default. To protect the server, libpaf will treat PAF_IDLE_MIN set lower than 1 second as set to 1 second.

    +

    On version 2 connections, libpaf depends on the transport protocol (e.g., TCP) for liveness checking.

    +

    On version 3 connections, TCP keepalive is disabled.

    +

    The minimum idle time is also used as an upper bound for the total amount of time the initial transport connection establishment (e.g., TCP three-way handshake and TLS hello) and the Pathfinder protocol-level hello transaction is allowed to take.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service published using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    For a description of how service TTLs work in Pathfinder, please refer to the Pathfinder protocol specification.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.12/jquery.js b/doc/v1.1.12/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.12/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.12/menu.js b/doc/v1.1.12/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.12/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.12/menudata.js b/doc/v1.1.12/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.12/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.12/minus.svg b/doc/v1.1.12/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.12/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.12/minusd.svg b/doc/v1.1.12/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.12/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.12/nav_f.png b/doc/v1.1.12/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/nav_fd.png b/doc/v1.1.12/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/nav_g.png b/doc/v1.1.12/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/open.png b/doc/v1.1.12/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.12/paf_8h_source.html b/doc/v1.1.12/paf_8h_source.html new file mode 100644 index 0000000..4ab350a --- /dev/null +++ b/doc/v1.1.12/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    301#include <stdint.h>
    +
    302#include <sys/types.h>
    +
    303
    +
    304#include <paf_props.h>
    +
    305#include <paf_match.h>
    +
    306#include <paf_err.h>
    +
    307
    +
    308struct paf_context;
    +
    309
    +
    332struct paf_context *paf_attach(const char *domain_name);
    +
    333
    +
    356int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    357
    +
    385int paf_modify(struct paf_context *context, int64_t service_id,
    +
    386 const struct paf_props *props);
    +
    387
    +
    406void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    407
    +
    426void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    427
    +
    464int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    465 paf_match_cb match_cb, void *user);
    +
    466
    +
    479void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    480
    +
    506int paf_fd(struct paf_context *context);
    +
    507
    +
    542int paf_process(struct paf_context *context);
    +
    543
    +
    567void paf_detach(struct paf_context *context);
    +
    568
    +
    583void paf_close(struct paf_context *context);
    +
    584
    +
    610char *paf_filter_escape(const char *s);
    +
    611
    +
    612#ifdef __cplusplus
    +
    613}
    +
    614#endif
    +
    615#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.12/paf__err_8h_source.html b/doc/v1.1.12/paf__err_8h_source.html new file mode 100644 index 0000000..a234d9e --- /dev/null +++ b/doc/v1.1.12/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.12/paf__match_8h.html b/doc/v1.1.12/paf__match_8h.html new file mode 100644 index 0000000..d541fb3 --- /dev/null +++ b/doc/v1.1.12/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.12/paf__match_8h_source.html b/doc/v1.1.12/paf__match_8h_source.html new file mode 100644 index 0000000..dd7aeaa --- /dev/null +++ b/doc/v1.1.12/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.12/paf__props_8h.html b/doc/v1.1.12/paf__props_8h.html new file mode 100644 index 0000000..26fc910 --- /dev/null +++ b/doc/v1.1.12/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.12/paf__props_8h_source.html b/doc/v1.1.12/paf__props_8h_source.html new file mode 100644 index 0000000..65d03bb --- /dev/null +++ b/doc/v1.1.12/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.12/paf__value_8h.html b/doc/v1.1.12/paf__value_8h.html new file mode 100644 index 0000000..67b0f02 --- /dev/null +++ b/doc/v1.1.12/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.12/paf__value_8h_source.html b/doc/v1.1.12/paf__value_8h_source.html new file mode 100644 index 0000000..ba4b096 --- /dev/null +++ b/doc/v1.1.12/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.12 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.12/plus.svg b/doc/v1.1.12/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.12/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.12/plusd.svg b/doc/v1.1.12/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.12/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.12/search/all_0.js b/doc/v1.1.12/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/doc/v1.1.12/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.12/search/all_1.js b/doc/v1.1.12/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/doc/v1.1.12/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.12/search/all_2.js b/doc/v1.1.12/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/doc/v1.1.12/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.12/search/all_3.js b/doc/v1.1.12/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.12/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.12/search/all_4.js b/doc/v1.1.12/search/all_4.js new file mode 100644 index 0000000..32d8d9a --- /dev/null +++ b/doc/v1.1.12/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['liveness_20tracking_1',['Liveness Tracking',['../index.html#liveness',1,'']]] +]; diff --git a/doc/v1.1.12/search/all_5.js b/doc/v1.1.12/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/doc/v1.1.12/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/doc/v1.1.12/search/all_6.js b/doc/v1.1.12/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.12/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.12/search/all_7.js b/doc/v1.1.12/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.12/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.12/search/all_8.js b/doc/v1.1.12/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.12/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.12/search/all_9.js b/doc/v1.1.12/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/doc/v1.1.12/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.12/search/all_a.js b/doc/v1.1.12/search/all_a.js new file mode 100644 index 0000000..a57ca9e --- /dev/null +++ b/doc/v1.1.12/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['tracking_2',['Liveness Tracking',['../index.html#liveness',1,'']]], + ['ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.12/search/close.svg b/doc/v1.1.12/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.12/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.12/search/enums_0.js b/doc/v1.1.12/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.12/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.12/search/enumvalues_0.js b/doc/v1.1.12/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.12/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.12/search/files_0.js b/doc/v1.1.12/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.12/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.12/search/functions_0.js b/doc/v1.1.12/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.12/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.12/search/mag.svg b/doc/v1.1.12/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.12/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.12/search/mag_d.svg b/doc/v1.1.12/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.12/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.12/search/mag_sel.svg b/doc/v1.1.12/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.12/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.12/search/mag_seld.svg b/doc/v1.1.12/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.12/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.12/search/pages_0.js b/doc/v1.1.12/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.12/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.12/search/pages_1.js b/doc/v1.1.12/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.12/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.12/search/pages_2.js b/doc/v1.1.12/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.12/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.12/search/pages_3.js b/doc/v1.1.12/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.12/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.12/search/search.css b/doc/v1.1.12/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.12/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.12/search/search.js b/doc/v1.1.12/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.12/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/splitbard.png b/doc/v1.1.12/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/sync_off.png b/doc/v1.1.12/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/sync_on.png b/doc/v1.1.12/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/tab_a.png b/doc/v1.1.12/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/tab_ad.png b/doc/v1.1.12/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/tab_s.png b/doc/v1.1.12/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/tab_sd.png b/doc/v1.1.12/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.12/tabs.css b/doc/v1.1.12/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.12/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.2/bc_s.png b/doc/v1.1.2/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/bc_sd.png b/doc/v1.1.2/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/closed.png b/doc/v1.1.2/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.2/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..0f47fde --- /dev/null +++ b/doc/v1.1.2/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.2/doc.svg b/doc/v1.1.2/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.2/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.2/docd.svg b/doc/v1.1.2/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.2/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.2/doxygen.css b/doc/v1.1.2/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.2/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.2/doxygen.svg b/doc/v1.1.2/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.2/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.2/dynsections.js b/doc/v1.1.2/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.2/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.2/files.html b/doc/v1.1.2/files.html new file mode 100644 index 0000000..c8c0732 --- /dev/null +++ b/doc/v1.1.2/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.2/folderclosed.svg b/doc/v1.1.2/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.2/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.2/folderclosedd.svg b/doc/v1.1.2/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.2/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.2/folderopen.svg b/doc/v1.1.2/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.2/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.2/folderopend.svg b/doc/v1.1.2/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.2/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.2/globals.html b/doc/v1.1.2/globals.html new file mode 100644 index 0000000..c9d69f1 --- /dev/null +++ b/doc/v1.1.2/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.2/globals_enum.html b/doc/v1.1.2/globals_enum.html new file mode 100644 index 0000000..531c118 --- /dev/null +++ b/doc/v1.1.2/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.2/globals_eval.html b/doc/v1.1.2/globals_eval.html new file mode 100644 index 0000000..007651a --- /dev/null +++ b/doc/v1.1.2/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.2/globals_func.html b/doc/v1.1.2/globals_func.html new file mode 100644 index 0000000..cb1275b --- /dev/null +++ b/doc/v1.1.2/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.2/globals_type.html b/doc/v1.1.2/globals_type.html new file mode 100644 index 0000000..87971f7 --- /dev/null +++ b/doc/v1.1.2/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.2/index.html b/doc/v1.1.2/index.html new file mode 100644 index 0000000..f781400 --- /dev/null +++ b/doc/v1.1.2/index.html @@ -0,0 +1,183 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.2 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, three optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam"
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Service TTL

    +

    A service publish using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.2/jquery.js b/doc/v1.1.2/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.2/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.2/menu.js b/doc/v1.1.2/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.2/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.2/menudata.js b/doc/v1.1.2/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.2/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.2/minus.svg b/doc/v1.1.2/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.2/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.2/minusd.svg b/doc/v1.1.2/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.2/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.2/nav_f.png b/doc/v1.1.2/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/nav_fd.png b/doc/v1.1.2/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/nav_g.png b/doc/v1.1.2/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/open.png b/doc/v1.1.2/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.2/paf_8h_source.html b/doc/v1.1.2/paf_8h_source.html new file mode 100644 index 0000000..062c8e3 --- /dev/null +++ b/doc/v1.1.2/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    209#include <stdint.h>
    +
    210#include <sys/types.h>
    +
    211
    +
    212#include <paf_props.h>
    +
    213#include <paf_match.h>
    +
    214#include <paf_err.h>
    +
    215
    +
    216struct paf_context;
    +
    217
    +
    237struct paf_context *paf_attach(const char *domain_name);
    +
    238
    +
    260int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    261
    +
    289int paf_modify(struct paf_context *context, int64_t service_id,
    +
    290 const struct paf_props *props);
    +
    291
    +
    310void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    311
    +
    330void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    331
    +
    368int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    369 paf_match_cb match_cb, void *user);
    +
    370
    +
    383void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    384
    +
    410int paf_fd(struct paf_context *context);
    +
    411
    +
    446int paf_process(struct paf_context *context);
    +
    447
    +
    471void paf_detach(struct paf_context *context);
    +
    472
    +
    487void paf_close(struct paf_context *context);
    +
    488
    +
    514char *paf_filter_escape(const char *s);
    +
    515
    +
    516#ifdef __cplusplus
    +
    517}
    +
    518#endif
    +
    519#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.2/paf__err_8h_source.html b/doc/v1.1.2/paf__err_8h_source.html new file mode 100644 index 0000000..c30977b --- /dev/null +++ b/doc/v1.1.2/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.2/paf__match_8h.html b/doc/v1.1.2/paf__match_8h.html new file mode 100644 index 0000000..82a6208 --- /dev/null +++ b/doc/v1.1.2/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.2/paf__match_8h_source.html b/doc/v1.1.2/paf__match_8h_source.html new file mode 100644 index 0000000..a082d6e --- /dev/null +++ b/doc/v1.1.2/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.2/paf__props_8h.html b/doc/v1.1.2/paf__props_8h.html new file mode 100644 index 0000000..fdecf1e --- /dev/null +++ b/doc/v1.1.2/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.2/paf__props_8h_source.html b/doc/v1.1.2/paf__props_8h_source.html new file mode 100644 index 0000000..8eb66ba --- /dev/null +++ b/doc/v1.1.2/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.2/paf__value_8h.html b/doc/v1.1.2/paf__value_8h.html new file mode 100644 index 0000000..8f6c381 --- /dev/null +++ b/doc/v1.1.2/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.2/paf__value_8h_source.html b/doc/v1.1.2/paf__value_8h_source.html new file mode 100644 index 0000000..1c1a8eb --- /dev/null +++ b/doc/v1.1.2/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.2 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.2/plus.svg b/doc/v1.1.2/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.2/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.2/plusd.svg b/doc/v1.1.2/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.2/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.2/search/all_0.js b/doc/v1.1.2/search/all_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.2/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.2/search/all_1.js b/doc/v1.1.2/search/all_1.js new file mode 100644 index 0000000..e937f8c --- /dev/null +++ b/doc/v1.1.2/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_mapping',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.2/search/all_2.js b/doc/v1.1.2/search/all_2.js new file mode 100644 index 0000000..ab1fb58 --- /dev/null +++ b/doc/v1.1.2/search/all_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['domain_20configuration_1',['Domain Configuration',['../index.html#domain_mapping',1,'']]], + ['domain_20file_20rescan_2',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_3',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.2/search/all_3.js b/doc/v1.1.2/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.2/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.2/search/all_4.js b/doc/v1.1.2/search/all_4.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.2/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.2/search/all_5.js b/doc/v1.1.2/search/all_5.js new file mode 100644 index 0000000..26e5292 --- /dev/null +++ b/doc/v1.1.2/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]] +]; diff --git a/doc/v1.1.2/search/all_6.js b/doc/v1.1.2/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.2/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.2/search/all_7.js b/doc/v1.1.2/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.2/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.2/search/all_8.js b/doc/v1.1.2/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.2/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.2/search/all_9.js b/doc/v1.1.2/search/all_9.js new file mode 100644 index 0000000..7787f7b --- /dev/null +++ b/doc/v1.1.2/search/all_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['service_20discovery_20domains_1',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.2/search/all_a.js b/doc/v1.1.2/search/all_a.js new file mode 100644 index 0000000..7969246 --- /dev/null +++ b/doc/v1.1.2/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.2/search/close.svg b/doc/v1.1.2/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.2/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.2/search/enums_0.js b/doc/v1.1.2/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.2/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.2/search/enumvalues_0.js b/doc/v1.1.2/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.2/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.2/search/files_0.js b/doc/v1.1.2/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.2/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.2/search/functions_0.js b/doc/v1.1.2/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.2/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.2/search/mag.svg b/doc/v1.1.2/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.2/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.2/search/mag_d.svg b/doc/v1.1.2/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.2/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.2/search/mag_sel.svg b/doc/v1.1.2/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.2/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.2/search/mag_seld.svg b/doc/v1.1.2/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.2/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.2/search/pages_0.js b/doc/v1.1.2/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.2/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.2/search/pages_1.js b/doc/v1.1.2/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.2/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.2/search/pages_2.js b/doc/v1.1.2/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.2/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.2/search/pages_3.js b/doc/v1.1.2/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.2/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.2/search/search.css b/doc/v1.1.2/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.2/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.2/search/search.js b/doc/v1.1.2/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.2/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/splitbard.png b/doc/v1.1.2/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/sync_off.png b/doc/v1.1.2/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/sync_on.png b/doc/v1.1.2/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/tab_a.png b/doc/v1.1.2/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/tab_ad.png b/doc/v1.1.2/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/tab_s.png b/doc/v1.1.2/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/tab_sd.png b/doc/v1.1.2/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.2/tabs.css b/doc/v1.1.2/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.2/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.3/bc_s.png b/doc/v1.1.3/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/bc_sd.png b/doc/v1.1.3/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/closed.png b/doc/v1.1.3/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.3/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..4bf90b4 --- /dev/null +++ b/doc/v1.1.3/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.3/doc.svg b/doc/v1.1.3/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.3/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.3/docd.svg b/doc/v1.1.3/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.3/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.3/doxygen.css b/doc/v1.1.3/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.3/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.3/doxygen.svg b/doc/v1.1.3/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.3/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.3/dynsections.js b/doc/v1.1.3/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.3/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.3/files.html b/doc/v1.1.3/files.html new file mode 100644 index 0000000..c28fe29 --- /dev/null +++ b/doc/v1.1.3/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.3/folderclosed.svg b/doc/v1.1.3/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.3/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.3/folderclosedd.svg b/doc/v1.1.3/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.3/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.3/folderopen.svg b/doc/v1.1.3/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.3/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.3/folderopend.svg b/doc/v1.1.3/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.3/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.3/globals.html b/doc/v1.1.3/globals.html new file mode 100644 index 0000000..e0e8792 --- /dev/null +++ b/doc/v1.1.3/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.3/globals_enum.html b/doc/v1.1.3/globals_enum.html new file mode 100644 index 0000000..703e195 --- /dev/null +++ b/doc/v1.1.3/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.3/globals_eval.html b/doc/v1.1.3/globals_eval.html new file mode 100644 index 0000000..cfd1fe4 --- /dev/null +++ b/doc/v1.1.3/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.3/globals_func.html b/doc/v1.1.3/globals_func.html new file mode 100644 index 0000000..b8b4f10 --- /dev/null +++ b/doc/v1.1.3/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.3/globals_type.html b/doc/v1.1.3/globals_type.html new file mode 100644 index 0000000..2ee9e27 --- /dev/null +++ b/doc/v1.1.3/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.3/index.html b/doc/v1.1.3/index.html new file mode 100644 index 0000000..71f3189 --- /dev/null +++ b/doc/v1.1.3/index.html @@ -0,0 +1,193 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.3 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam"
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service publish using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.3/jquery.js b/doc/v1.1.3/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.3/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.3/menu.js b/doc/v1.1.3/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.3/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.3/menudata.js b/doc/v1.1.3/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.3/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.3/minus.svg b/doc/v1.1.3/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.3/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.3/minusd.svg b/doc/v1.1.3/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.3/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.3/nav_f.png b/doc/v1.1.3/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/nav_fd.png b/doc/v1.1.3/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/nav_g.png b/doc/v1.1.3/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/open.png b/doc/v1.1.3/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.3/paf_8h_source.html b/doc/v1.1.3/paf_8h_source.html new file mode 100644 index 0000000..763b4f7 --- /dev/null +++ b/doc/v1.1.3/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    236#include <stdint.h>
    +
    237#include <sys/types.h>
    +
    238
    +
    239#include <paf_props.h>
    +
    240#include <paf_match.h>
    +
    241#include <paf_err.h>
    +
    242
    +
    243struct paf_context;
    +
    244
    +
    267struct paf_context *paf_attach(const char *domain_name);
    +
    268
    +
    291int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    292
    +
    320int paf_modify(struct paf_context *context, int64_t service_id,
    +
    321 const struct paf_props *props);
    +
    322
    +
    341void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    342
    +
    361void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    362
    +
    399int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    400 paf_match_cb match_cb, void *user);
    +
    401
    +
    414void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    415
    +
    441int paf_fd(struct paf_context *context);
    +
    442
    +
    477int paf_process(struct paf_context *context);
    +
    478
    +
    502void paf_detach(struct paf_context *context);
    +
    503
    +
    518void paf_close(struct paf_context *context);
    +
    519
    +
    545char *paf_filter_escape(const char *s);
    +
    546
    +
    547#ifdef __cplusplus
    +
    548}
    +
    549#endif
    +
    550#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.3/paf__err_8h_source.html b/doc/v1.1.3/paf__err_8h_source.html new file mode 100644 index 0000000..1f67a04 --- /dev/null +++ b/doc/v1.1.3/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.3/paf__match_8h.html b/doc/v1.1.3/paf__match_8h.html new file mode 100644 index 0000000..6f41c32 --- /dev/null +++ b/doc/v1.1.3/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.3/paf__match_8h_source.html b/doc/v1.1.3/paf__match_8h_source.html new file mode 100644 index 0000000..5555eb5 --- /dev/null +++ b/doc/v1.1.3/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.3/paf__props_8h.html b/doc/v1.1.3/paf__props_8h.html new file mode 100644 index 0000000..2a40a47 --- /dev/null +++ b/doc/v1.1.3/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.3/paf__props_8h_source.html b/doc/v1.1.3/paf__props_8h_source.html new file mode 100644 index 0000000..f9fccda --- /dev/null +++ b/doc/v1.1.3/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.3/paf__value_8h.html b/doc/v1.1.3/paf__value_8h.html new file mode 100644 index 0000000..fd345f9 --- /dev/null +++ b/doc/v1.1.3/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.3/paf__value_8h_source.html b/doc/v1.1.3/paf__value_8h_source.html new file mode 100644 index 0000000..7146b22 --- /dev/null +++ b/doc/v1.1.3/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.3 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.3/plus.svg b/doc/v1.1.3/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.3/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.3/plusd.svg b/doc/v1.1.3/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.3/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.3/search/all_0.js b/doc/v1.1.3/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/doc/v1.1.3/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.3/search/all_1.js b/doc/v1.1.3/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/doc/v1.1.3/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.3/search/all_2.js b/doc/v1.1.3/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/doc/v1.1.3/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.3/search/all_3.js b/doc/v1.1.3/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.3/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.3/search/all_4.js b/doc/v1.1.3/search/all_4.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.3/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.3/search/all_5.js b/doc/v1.1.3/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/doc/v1.1.3/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/doc/v1.1.3/search/all_6.js b/doc/v1.1.3/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.3/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.3/search/all_7.js b/doc/v1.1.3/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.3/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.3/search/all_8.js b/doc/v1.1.3/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.3/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.3/search/all_9.js b/doc/v1.1.3/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/doc/v1.1.3/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.3/search/all_a.js b/doc/v1.1.3/search/all_a.js new file mode 100644 index 0000000..7969246 --- /dev/null +++ b/doc/v1.1.3/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.3/search/close.svg b/doc/v1.1.3/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.3/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.3/search/enums_0.js b/doc/v1.1.3/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.3/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.3/search/enumvalues_0.js b/doc/v1.1.3/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.3/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.3/search/files_0.js b/doc/v1.1.3/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.3/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.3/search/functions_0.js b/doc/v1.1.3/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.3/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.3/search/mag.svg b/doc/v1.1.3/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.3/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.3/search/mag_d.svg b/doc/v1.1.3/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.3/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.3/search/mag_sel.svg b/doc/v1.1.3/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.3/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.3/search/mag_seld.svg b/doc/v1.1.3/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.3/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.3/search/pages_0.js b/doc/v1.1.3/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.3/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.3/search/pages_1.js b/doc/v1.1.3/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.3/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.3/search/pages_2.js b/doc/v1.1.3/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.3/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.3/search/pages_3.js b/doc/v1.1.3/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.3/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.3/search/search.css b/doc/v1.1.3/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.3/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.3/search/search.js b/doc/v1.1.3/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.3/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/splitbard.png b/doc/v1.1.3/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/sync_off.png b/doc/v1.1.3/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/sync_on.png b/doc/v1.1.3/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/tab_a.png b/doc/v1.1.3/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/tab_ad.png b/doc/v1.1.3/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/tab_s.png b/doc/v1.1.3/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/tab_sd.png b/doc/v1.1.3/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.3/tabs.css b/doc/v1.1.3/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.3/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.4/bc_s.png b/doc/v1.1.4/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/bc_sd.png b/doc/v1.1.4/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/closed.png b/doc/v1.1.4/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.4/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..8702e3d --- /dev/null +++ b/doc/v1.1.4/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.4/doc.svg b/doc/v1.1.4/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.4/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.4/docd.svg b/doc/v1.1.4/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.4/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.4/doxygen.css b/doc/v1.1.4/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.4/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.4/doxygen.svg b/doc/v1.1.4/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.4/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.4/dynsections.js b/doc/v1.1.4/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.4/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.4/files.html b/doc/v1.1.4/files.html new file mode 100644 index 0000000..9b943dc --- /dev/null +++ b/doc/v1.1.4/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.4/folderclosed.svg b/doc/v1.1.4/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.4/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.4/folderclosedd.svg b/doc/v1.1.4/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.4/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.4/folderopen.svg b/doc/v1.1.4/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.4/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.4/folderopend.svg b/doc/v1.1.4/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.4/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.4/globals.html b/doc/v1.1.4/globals.html new file mode 100644 index 0000000..d2eaec3 --- /dev/null +++ b/doc/v1.1.4/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.4/globals_enum.html b/doc/v1.1.4/globals_enum.html new file mode 100644 index 0000000..3fd454c --- /dev/null +++ b/doc/v1.1.4/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.4/globals_eval.html b/doc/v1.1.4/globals_eval.html new file mode 100644 index 0000000..262937b --- /dev/null +++ b/doc/v1.1.4/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.4/globals_func.html b/doc/v1.1.4/globals_func.html new file mode 100644 index 0000000..e1acaf4 --- /dev/null +++ b/doc/v1.1.4/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.4/globals_type.html b/doc/v1.1.4/globals_type.html new file mode 100644 index 0000000..ba65117 --- /dev/null +++ b/doc/v1.1.4/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.4/index.html b/doc/v1.1.4/index.html new file mode 100644 index 0000000..cf1a44b --- /dev/null +++ b/doc/v1.1.4/index.html @@ -0,0 +1,193 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.4 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam"
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service publish using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.4/jquery.js b/doc/v1.1.4/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.4/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.4/menu.js b/doc/v1.1.4/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.4/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.4/menudata.js b/doc/v1.1.4/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.4/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.4/minus.svg b/doc/v1.1.4/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.4/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.4/minusd.svg b/doc/v1.1.4/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.4/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.4/nav_f.png b/doc/v1.1.4/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/nav_fd.png b/doc/v1.1.4/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/nav_g.png b/doc/v1.1.4/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/open.png b/doc/v1.1.4/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.4/paf_8h_source.html b/doc/v1.1.4/paf_8h_source.html new file mode 100644 index 0000000..c8b339a --- /dev/null +++ b/doc/v1.1.4/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    236#include <stdint.h>
    +
    237#include <sys/types.h>
    +
    238
    +
    239#include <paf_props.h>
    +
    240#include <paf_match.h>
    +
    241#include <paf_err.h>
    +
    242
    +
    243struct paf_context;
    +
    244
    +
    267struct paf_context *paf_attach(const char *domain_name);
    +
    268
    +
    291int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    292
    +
    320int paf_modify(struct paf_context *context, int64_t service_id,
    +
    321 const struct paf_props *props);
    +
    322
    +
    341void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    342
    +
    361void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    362
    +
    399int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    400 paf_match_cb match_cb, void *user);
    +
    401
    +
    414void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    415
    +
    441int paf_fd(struct paf_context *context);
    +
    442
    +
    477int paf_process(struct paf_context *context);
    +
    478
    +
    502void paf_detach(struct paf_context *context);
    +
    503
    +
    518void paf_close(struct paf_context *context);
    +
    519
    +
    545char *paf_filter_escape(const char *s);
    +
    546
    +
    547#ifdef __cplusplus
    +
    548}
    +
    549#endif
    +
    550#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.4/paf__err_8h_source.html b/doc/v1.1.4/paf__err_8h_source.html new file mode 100644 index 0000000..9a7eed2 --- /dev/null +++ b/doc/v1.1.4/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.4/paf__match_8h.html b/doc/v1.1.4/paf__match_8h.html new file mode 100644 index 0000000..797bc69 --- /dev/null +++ b/doc/v1.1.4/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.4/paf__match_8h_source.html b/doc/v1.1.4/paf__match_8h_source.html new file mode 100644 index 0000000..d205dbd --- /dev/null +++ b/doc/v1.1.4/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.4/paf__props_8h.html b/doc/v1.1.4/paf__props_8h.html new file mode 100644 index 0000000..2ba0ca6 --- /dev/null +++ b/doc/v1.1.4/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.4/paf__props_8h_source.html b/doc/v1.1.4/paf__props_8h_source.html new file mode 100644 index 0000000..98dc0d6 --- /dev/null +++ b/doc/v1.1.4/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.4/paf__value_8h.html b/doc/v1.1.4/paf__value_8h.html new file mode 100644 index 0000000..f1b9a1a --- /dev/null +++ b/doc/v1.1.4/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.4/paf__value_8h_source.html b/doc/v1.1.4/paf__value_8h_source.html new file mode 100644 index 0000000..cf87812 --- /dev/null +++ b/doc/v1.1.4/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.4 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.4/plus.svg b/doc/v1.1.4/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.4/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.4/plusd.svg b/doc/v1.1.4/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.4/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.4/search/all_0.js b/doc/v1.1.4/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/doc/v1.1.4/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.4/search/all_1.js b/doc/v1.1.4/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/doc/v1.1.4/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.4/search/all_2.js b/doc/v1.1.4/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/doc/v1.1.4/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.4/search/all_3.js b/doc/v1.1.4/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.4/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.4/search/all_4.js b/doc/v1.1.4/search/all_4.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.4/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.4/search/all_5.js b/doc/v1.1.4/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/doc/v1.1.4/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/doc/v1.1.4/search/all_6.js b/doc/v1.1.4/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.4/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.4/search/all_7.js b/doc/v1.1.4/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.4/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.4/search/all_8.js b/doc/v1.1.4/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.4/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.4/search/all_9.js b/doc/v1.1.4/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/doc/v1.1.4/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.4/search/all_a.js b/doc/v1.1.4/search/all_a.js new file mode 100644 index 0000000..7969246 --- /dev/null +++ b/doc/v1.1.4/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.4/search/close.svg b/doc/v1.1.4/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.4/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.4/search/enums_0.js b/doc/v1.1.4/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.4/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.4/search/enumvalues_0.js b/doc/v1.1.4/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.4/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.4/search/files_0.js b/doc/v1.1.4/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.4/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.4/search/functions_0.js b/doc/v1.1.4/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.4/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.4/search/mag.svg b/doc/v1.1.4/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.4/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.4/search/mag_d.svg b/doc/v1.1.4/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.4/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.4/search/mag_sel.svg b/doc/v1.1.4/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.4/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.4/search/mag_seld.svg b/doc/v1.1.4/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.4/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.4/search/pages_0.js b/doc/v1.1.4/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.4/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.4/search/pages_1.js b/doc/v1.1.4/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.4/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.4/search/pages_2.js b/doc/v1.1.4/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.4/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.4/search/pages_3.js b/doc/v1.1.4/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.4/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.4/search/search.css b/doc/v1.1.4/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.4/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.4/search/search.js b/doc/v1.1.4/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.4/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/splitbard.png b/doc/v1.1.4/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/sync_off.png b/doc/v1.1.4/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/sync_on.png b/doc/v1.1.4/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/tab_a.png b/doc/v1.1.4/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/tab_ad.png b/doc/v1.1.4/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/tab_s.png b/doc/v1.1.4/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/tab_sd.png b/doc/v1.1.4/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.4/tabs.css b/doc/v1.1.4/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.4/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.5/bc_s.png b/doc/v1.1.5/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/bc_sd.png b/doc/v1.1.5/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/closed.png b/doc/v1.1.5/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.5/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..cf166d6 --- /dev/null +++ b/doc/v1.1.5/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.5/doc.svg b/doc/v1.1.5/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.5/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.5/docd.svg b/doc/v1.1.5/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.5/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.5/doxygen.css b/doc/v1.1.5/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.5/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.5/doxygen.svg b/doc/v1.1.5/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.5/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.5/dynsections.js b/doc/v1.1.5/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.5/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.5/files.html b/doc/v1.1.5/files.html new file mode 100644 index 0000000..2221e36 --- /dev/null +++ b/doc/v1.1.5/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.5/folderclosed.svg b/doc/v1.1.5/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.5/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.5/folderclosedd.svg b/doc/v1.1.5/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.5/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.5/folderopen.svg b/doc/v1.1.5/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.5/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.5/folderopend.svg b/doc/v1.1.5/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.5/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.5/globals.html b/doc/v1.1.5/globals.html new file mode 100644 index 0000000..1d10686 --- /dev/null +++ b/doc/v1.1.5/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.5/globals_enum.html b/doc/v1.1.5/globals_enum.html new file mode 100644 index 0000000..f9a4c36 --- /dev/null +++ b/doc/v1.1.5/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.5/globals_eval.html b/doc/v1.1.5/globals_eval.html new file mode 100644 index 0000000..17d353e --- /dev/null +++ b/doc/v1.1.5/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.5/globals_func.html b/doc/v1.1.5/globals_func.html new file mode 100644 index 0000000..c13af55 --- /dev/null +++ b/doc/v1.1.5/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.5/globals_type.html b/doc/v1.1.5/globals_type.html new file mode 100644 index 0000000..8064158 --- /dev/null +++ b/doc/v1.1.5/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.5/index.html b/doc/v1.1.5/index.html new file mode 100644 index 0000000..d59ad95 --- /dev/null +++ b/doc/v1.1.5/index.html @@ -0,0 +1,193 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.5 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam"
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service publish using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.5/jquery.js b/doc/v1.1.5/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.5/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.5/menu.js b/doc/v1.1.5/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.5/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.5/menudata.js b/doc/v1.1.5/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.5/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.5/minus.svg b/doc/v1.1.5/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.5/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.5/minusd.svg b/doc/v1.1.5/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.5/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.5/nav_f.png b/doc/v1.1.5/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/nav_fd.png b/doc/v1.1.5/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/nav_g.png b/doc/v1.1.5/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/open.png b/doc/v1.1.5/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.5/paf_8h_source.html b/doc/v1.1.5/paf_8h_source.html new file mode 100644 index 0000000..0fc908a --- /dev/null +++ b/doc/v1.1.5/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    236#include <stdint.h>
    +
    237#include <sys/types.h>
    +
    238
    +
    239#include <paf_props.h>
    +
    240#include <paf_match.h>
    +
    241#include <paf_err.h>
    +
    242
    +
    243struct paf_context;
    +
    244
    +
    267struct paf_context *paf_attach(const char *domain_name);
    +
    268
    +
    291int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    292
    +
    320int paf_modify(struct paf_context *context, int64_t service_id,
    +
    321 const struct paf_props *props);
    +
    322
    +
    341void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    342
    +
    361void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    362
    +
    399int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    400 paf_match_cb match_cb, void *user);
    +
    401
    +
    414void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    415
    +
    441int paf_fd(struct paf_context *context);
    +
    442
    +
    477int paf_process(struct paf_context *context);
    +
    478
    +
    502void paf_detach(struct paf_context *context);
    +
    503
    +
    518void paf_close(struct paf_context *context);
    +
    519
    +
    545char *paf_filter_escape(const char *s);
    +
    546
    +
    547#ifdef __cplusplus
    +
    548}
    +
    549#endif
    +
    550#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.5/paf__err_8h_source.html b/doc/v1.1.5/paf__err_8h_source.html new file mode 100644 index 0000000..a85057b --- /dev/null +++ b/doc/v1.1.5/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.5/paf__match_8h.html b/doc/v1.1.5/paf__match_8h.html new file mode 100644 index 0000000..b899275 --- /dev/null +++ b/doc/v1.1.5/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.5/paf__match_8h_source.html b/doc/v1.1.5/paf__match_8h_source.html new file mode 100644 index 0000000..4a6d5d3 --- /dev/null +++ b/doc/v1.1.5/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.5/paf__props_8h.html b/doc/v1.1.5/paf__props_8h.html new file mode 100644 index 0000000..9fc83a4 --- /dev/null +++ b/doc/v1.1.5/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.5/paf__props_8h_source.html b/doc/v1.1.5/paf__props_8h_source.html new file mode 100644 index 0000000..91fff80 --- /dev/null +++ b/doc/v1.1.5/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.5/paf__value_8h.html b/doc/v1.1.5/paf__value_8h.html new file mode 100644 index 0000000..f10a339 --- /dev/null +++ b/doc/v1.1.5/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.5/paf__value_8h_source.html b/doc/v1.1.5/paf__value_8h_source.html new file mode 100644 index 0000000..6a94ce3 --- /dev/null +++ b/doc/v1.1.5/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.5 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.5/plus.svg b/doc/v1.1.5/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.5/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.5/plusd.svg b/doc/v1.1.5/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.5/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.5/search/all_0.js b/doc/v1.1.5/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/doc/v1.1.5/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.5/search/all_1.js b/doc/v1.1.5/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/doc/v1.1.5/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.5/search/all_2.js b/doc/v1.1.5/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/doc/v1.1.5/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.5/search/all_3.js b/doc/v1.1.5/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.5/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.5/search/all_4.js b/doc/v1.1.5/search/all_4.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.5/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.5/search/all_5.js b/doc/v1.1.5/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/doc/v1.1.5/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/doc/v1.1.5/search/all_6.js b/doc/v1.1.5/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.5/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.5/search/all_7.js b/doc/v1.1.5/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.5/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.5/search/all_8.js b/doc/v1.1.5/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.5/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.5/search/all_9.js b/doc/v1.1.5/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/doc/v1.1.5/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.5/search/all_a.js b/doc/v1.1.5/search/all_a.js new file mode 100644 index 0000000..7969246 --- /dev/null +++ b/doc/v1.1.5/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.5/search/close.svg b/doc/v1.1.5/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.5/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.5/search/enums_0.js b/doc/v1.1.5/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.5/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.5/search/enumvalues_0.js b/doc/v1.1.5/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.5/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.5/search/files_0.js b/doc/v1.1.5/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.5/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.5/search/functions_0.js b/doc/v1.1.5/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.5/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.5/search/mag.svg b/doc/v1.1.5/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.5/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.5/search/mag_d.svg b/doc/v1.1.5/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.5/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.5/search/mag_sel.svg b/doc/v1.1.5/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.5/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.5/search/mag_seld.svg b/doc/v1.1.5/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.5/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.5/search/pages_0.js b/doc/v1.1.5/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.5/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.5/search/pages_1.js b/doc/v1.1.5/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.5/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.5/search/pages_2.js b/doc/v1.1.5/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.5/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.5/search/pages_3.js b/doc/v1.1.5/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.5/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.5/search/search.css b/doc/v1.1.5/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.5/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.5/search/search.js b/doc/v1.1.5/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.5/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/splitbard.png b/doc/v1.1.5/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/sync_off.png b/doc/v1.1.5/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/sync_on.png b/doc/v1.1.5/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/tab_a.png b/doc/v1.1.5/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/tab_ad.png b/doc/v1.1.5/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/tab_s.png b/doc/v1.1.5/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/tab_sd.png b/doc/v1.1.5/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.5/tabs.css b/doc/v1.1.5/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.5/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.6/bc_s.png b/doc/v1.1.6/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/bc_sd.png b/doc/v1.1.6/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/closed.png b/doc/v1.1.6/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.6/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..d5f9920 --- /dev/null +++ b/doc/v1.1.6/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.6/doc.svg b/doc/v1.1.6/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.6/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.6/docd.svg b/doc/v1.1.6/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.6/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.6/doxygen.css b/doc/v1.1.6/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.6/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.6/doxygen.svg b/doc/v1.1.6/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.6/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.6/dynsections.js b/doc/v1.1.6/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.6/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.6/files.html b/doc/v1.1.6/files.html new file mode 100644 index 0000000..4ce4dab --- /dev/null +++ b/doc/v1.1.6/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.6/folderclosed.svg b/doc/v1.1.6/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.6/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.6/folderclosedd.svg b/doc/v1.1.6/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.6/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.6/folderopen.svg b/doc/v1.1.6/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.6/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.6/folderopend.svg b/doc/v1.1.6/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.6/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.6/globals.html b/doc/v1.1.6/globals.html new file mode 100644 index 0000000..3d50694 --- /dev/null +++ b/doc/v1.1.6/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.6/globals_enum.html b/doc/v1.1.6/globals_enum.html new file mode 100644 index 0000000..f18468e --- /dev/null +++ b/doc/v1.1.6/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.6/globals_eval.html b/doc/v1.1.6/globals_eval.html new file mode 100644 index 0000000..f5e4967 --- /dev/null +++ b/doc/v1.1.6/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.6/globals_func.html b/doc/v1.1.6/globals_func.html new file mode 100644 index 0000000..e4a72e4 --- /dev/null +++ b/doc/v1.1.6/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.6/globals_type.html b/doc/v1.1.6/globals_type.html new file mode 100644 index 0000000..fab4a1f --- /dev/null +++ b/doc/v1.1.6/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.6/index.html b/doc/v1.1.6/index.html new file mode 100644 index 0000000..25e3113 --- /dev/null +++ b/doc/v1.1.6/index.html @@ -0,0 +1,194 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.6 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam"
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service published using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    For a description of how service TTLs work in Pathfinder, please refer to the Pathfinder protocol specification.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.6/jquery.js b/doc/v1.1.6/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.6/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.6/menu.js b/doc/v1.1.6/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.6/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.6/menudata.js b/doc/v1.1.6/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.6/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.6/minus.svg b/doc/v1.1.6/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.6/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.6/minusd.svg b/doc/v1.1.6/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.6/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.6/nav_f.png b/doc/v1.1.6/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/nav_fd.png b/doc/v1.1.6/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/nav_g.png b/doc/v1.1.6/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/open.png b/doc/v1.1.6/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.6/paf_8h_source.html b/doc/v1.1.6/paf_8h_source.html new file mode 100644 index 0000000..3ead364 --- /dev/null +++ b/doc/v1.1.6/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    239#include <stdint.h>
    +
    240#include <sys/types.h>
    +
    241
    +
    242#include <paf_props.h>
    +
    243#include <paf_match.h>
    +
    244#include <paf_err.h>
    +
    245
    +
    246struct paf_context;
    +
    247
    +
    270struct paf_context *paf_attach(const char *domain_name);
    +
    271
    +
    294int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    295
    +
    323int paf_modify(struct paf_context *context, int64_t service_id,
    +
    324 const struct paf_props *props);
    +
    325
    +
    344void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    345
    +
    364void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    365
    +
    402int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    403 paf_match_cb match_cb, void *user);
    +
    404
    +
    417void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    418
    +
    444int paf_fd(struct paf_context *context);
    +
    445
    +
    480int paf_process(struct paf_context *context);
    +
    481
    +
    505void paf_detach(struct paf_context *context);
    +
    506
    +
    521void paf_close(struct paf_context *context);
    +
    522
    +
    548char *paf_filter_escape(const char *s);
    +
    549
    +
    550#ifdef __cplusplus
    +
    551}
    +
    552#endif
    +
    553#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.6/paf__err_8h_source.html b/doc/v1.1.6/paf__err_8h_source.html new file mode 100644 index 0000000..5a84e07 --- /dev/null +++ b/doc/v1.1.6/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.6/paf__match_8h.html b/doc/v1.1.6/paf__match_8h.html new file mode 100644 index 0000000..f308199 --- /dev/null +++ b/doc/v1.1.6/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.6/paf__match_8h_source.html b/doc/v1.1.6/paf__match_8h_source.html new file mode 100644 index 0000000..f3d7293 --- /dev/null +++ b/doc/v1.1.6/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.6/paf__props_8h.html b/doc/v1.1.6/paf__props_8h.html new file mode 100644 index 0000000..73699cb --- /dev/null +++ b/doc/v1.1.6/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.6/paf__props_8h_source.html b/doc/v1.1.6/paf__props_8h_source.html new file mode 100644 index 0000000..9b2048e --- /dev/null +++ b/doc/v1.1.6/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.6/paf__value_8h.html b/doc/v1.1.6/paf__value_8h.html new file mode 100644 index 0000000..db39c04 --- /dev/null +++ b/doc/v1.1.6/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.6/paf__value_8h_source.html b/doc/v1.1.6/paf__value_8h_source.html new file mode 100644 index 0000000..62724cf --- /dev/null +++ b/doc/v1.1.6/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.6 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.6/plus.svg b/doc/v1.1.6/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.6/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.6/plusd.svg b/doc/v1.1.6/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.6/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.6/search/all_0.js b/doc/v1.1.6/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/doc/v1.1.6/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.6/search/all_1.js b/doc/v1.1.6/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/doc/v1.1.6/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.6/search/all_2.js b/doc/v1.1.6/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/doc/v1.1.6/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.6/search/all_3.js b/doc/v1.1.6/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.6/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.6/search/all_4.js b/doc/v1.1.6/search/all_4.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.6/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.6/search/all_5.js b/doc/v1.1.6/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/doc/v1.1.6/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/doc/v1.1.6/search/all_6.js b/doc/v1.1.6/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.6/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.6/search/all_7.js b/doc/v1.1.6/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.6/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.6/search/all_8.js b/doc/v1.1.6/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.6/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.6/search/all_9.js b/doc/v1.1.6/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/doc/v1.1.6/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.6/search/all_a.js b/doc/v1.1.6/search/all_a.js new file mode 100644 index 0000000..7969246 --- /dev/null +++ b/doc/v1.1.6/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['ttl_2',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.6/search/close.svg b/doc/v1.1.6/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.6/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.6/search/enums_0.js b/doc/v1.1.6/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.6/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.6/search/enumvalues_0.js b/doc/v1.1.6/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.6/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.6/search/files_0.js b/doc/v1.1.6/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.6/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.6/search/functions_0.js b/doc/v1.1.6/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.6/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.6/search/mag.svg b/doc/v1.1.6/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.6/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.6/search/mag_d.svg b/doc/v1.1.6/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.6/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.6/search/mag_sel.svg b/doc/v1.1.6/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.6/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.6/search/mag_seld.svg b/doc/v1.1.6/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.6/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.6/search/pages_0.js b/doc/v1.1.6/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.6/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.6/search/pages_1.js b/doc/v1.1.6/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.6/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.6/search/pages_2.js b/doc/v1.1.6/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.6/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.6/search/pages_3.js b/doc/v1.1.6/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.6/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.6/search/search.css b/doc/v1.1.6/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.6/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.6/search/search.js b/doc/v1.1.6/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.6/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/splitbard.png b/doc/v1.1.6/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/sync_off.png b/doc/v1.1.6/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/sync_on.png b/doc/v1.1.6/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/tab_a.png b/doc/v1.1.6/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/tab_ad.png b/doc/v1.1.6/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/tab_s.png b/doc/v1.1.6/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/tab_sd.png b/doc/v1.1.6/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.6/tabs.css b/doc/v1.1.6/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.6/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.7/bc_s.png b/doc/v1.1.7/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/bc_sd.png b/doc/v1.1.7/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/closed.png b/doc/v1.1.7/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.7/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..74481d4 --- /dev/null +++ b/doc/v1.1.7/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.7/doc.svg b/doc/v1.1.7/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.7/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.7/docd.svg b/doc/v1.1.7/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.7/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.7/doxygen.css b/doc/v1.1.7/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.7/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.7/doxygen.svg b/doc/v1.1.7/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.7/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.7/dynsections.js b/doc/v1.1.7/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.7/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.7/files.html b/doc/v1.1.7/files.html new file mode 100644 index 0000000..4d6f0dd --- /dev/null +++ b/doc/v1.1.7/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.7/folderclosed.svg b/doc/v1.1.7/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.7/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.7/folderclosedd.svg b/doc/v1.1.7/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.7/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.7/folderopen.svg b/doc/v1.1.7/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.7/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.7/folderopend.svg b/doc/v1.1.7/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.7/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.7/globals.html b/doc/v1.1.7/globals.html new file mode 100644 index 0000000..04d1bb4 --- /dev/null +++ b/doc/v1.1.7/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.7/globals_enum.html b/doc/v1.1.7/globals_enum.html new file mode 100644 index 0000000..b6be400 --- /dev/null +++ b/doc/v1.1.7/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.7/globals_eval.html b/doc/v1.1.7/globals_eval.html new file mode 100644 index 0000000..8dbb5fd --- /dev/null +++ b/doc/v1.1.7/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.7/globals_func.html b/doc/v1.1.7/globals_func.html new file mode 100644 index 0000000..8b529b7 --- /dev/null +++ b/doc/v1.1.7/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.7/globals_type.html b/doc/v1.1.7/globals_type.html new file mode 100644 index 0000000..ce7fe20 --- /dev/null +++ b/doc/v1.1.7/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.7/index.html b/doc/v1.1.7/index.html new file mode 100644 index 0000000..6d87a5e --- /dev/null +++ b/doc/v1.1.7/index.html @@ -0,0 +1,209 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.7 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may have a key "minProtocolVersion", used to increase the minimum protocol version advertised as supported by libpaf to that server. If "minProtocolVersion" is set higher than the maximum version suported by libpaf (i.e., > 3), no connections will be initiated to that server.

    +

    A server object may have the key "maxProtocolVersion", used to decrease the maximum protocol version advertised by libpaf. If the "maxProtocolVersion" is set lower than the minimum version supported by libpaf (i.e., < 2), no connections will be initiated to that server.

    +

    If both "minProtocolVersion" and "maxProtocolVersion" are set, "minProtocolVersion" must be equal to or lower than "maxProtocolVersion".

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "minProtocolVersion": 3,
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam"
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    "maxProtocolVersion": 2,
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Liveness Tracking

    +

    On connections where the Pathfinder protocol version 3 is negotiated to be used, libpaf performs server liveness tracking on the level of the Pathfinder protocol.

    +

    On v3 connections, libpaf imposes an upper limit on how long time the remote peer is allowed to remain idle. When maximum idle time is approaching, libpaf will query the server to ensure it is still alive. In case the server also employs liveness checking, any server queries will be treated as a sign of life, and make libpaf post-poned any liveness query.

    +

    The maximum idle time is 30 seconds by default, and may be overriden by setting the PAF_IDLE_MAX environment variable.

    +

    The actual max idle time used may be lower than PAF_IDLE_MAX, in case low-TTL services have been published by the application, or have been matched in one of its subscriptions.

    +

    The actual max idle time will never be set to lower than PAF_IDLE_MIN, which is 4 seconds by default. To protect the server, libpaf will treat PAF_IDLE_MIN set lower than 1 second as set to 1 second.

    +

    On version 2 connections, libpaf depends on the transport protocol (e.g., TCP) for liveness checking.

    +

    On version 3 connections, TCP keepalive is disabled.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service published using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    For a description of how service TTLs work in Pathfinder, please refer to the Pathfinder protocol specification.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.7/jquery.js b/doc/v1.1.7/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.7/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.7/menu.js b/doc/v1.1.7/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.7/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.7/menudata.js b/doc/v1.1.7/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.7/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.7/minus.svg b/doc/v1.1.7/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.7/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.7/minusd.svg b/doc/v1.1.7/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.7/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.7/nav_f.png b/doc/v1.1.7/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/nav_fd.png b/doc/v1.1.7/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/nav_g.png b/doc/v1.1.7/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/open.png b/doc/v1.1.7/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.7/paf_8h_source.html b/doc/v1.1.7/paf_8h_source.html new file mode 100644 index 0000000..8dc287f --- /dev/null +++ b/doc/v1.1.7/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    287#include <stdint.h>
    +
    288#include <sys/types.h>
    +
    289
    +
    290#include <paf_props.h>
    +
    291#include <paf_match.h>
    +
    292#include <paf_err.h>
    +
    293
    +
    294struct paf_context;
    +
    295
    +
    318struct paf_context *paf_attach(const char *domain_name);
    +
    319
    +
    342int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    343
    +
    371int paf_modify(struct paf_context *context, int64_t service_id,
    +
    372 const struct paf_props *props);
    +
    373
    +
    392void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    393
    +
    412void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    413
    +
    450int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    451 paf_match_cb match_cb, void *user);
    +
    452
    +
    465void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    466
    +
    492int paf_fd(struct paf_context *context);
    +
    493
    +
    528int paf_process(struct paf_context *context);
    +
    529
    +
    553void paf_detach(struct paf_context *context);
    +
    554
    +
    569void paf_close(struct paf_context *context);
    +
    570
    +
    596char *paf_filter_escape(const char *s);
    +
    597
    +
    598#ifdef __cplusplus
    +
    599}
    +
    600#endif
    +
    601#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.7/paf__err_8h_source.html b/doc/v1.1.7/paf__err_8h_source.html new file mode 100644 index 0000000..b9a2501 --- /dev/null +++ b/doc/v1.1.7/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.7/paf__match_8h.html b/doc/v1.1.7/paf__match_8h.html new file mode 100644 index 0000000..0901e0e --- /dev/null +++ b/doc/v1.1.7/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.7/paf__match_8h_source.html b/doc/v1.1.7/paf__match_8h_source.html new file mode 100644 index 0000000..058e8cc --- /dev/null +++ b/doc/v1.1.7/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.7/paf__props_8h.html b/doc/v1.1.7/paf__props_8h.html new file mode 100644 index 0000000..c165f34 --- /dev/null +++ b/doc/v1.1.7/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.7/paf__props_8h_source.html b/doc/v1.1.7/paf__props_8h_source.html new file mode 100644 index 0000000..b71081f --- /dev/null +++ b/doc/v1.1.7/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.7/paf__value_8h.html b/doc/v1.1.7/paf__value_8h.html new file mode 100644 index 0000000..7fc41a3 --- /dev/null +++ b/doc/v1.1.7/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.7/paf__value_8h_source.html b/doc/v1.1.7/paf__value_8h_source.html new file mode 100644 index 0000000..1100c4a --- /dev/null +++ b/doc/v1.1.7/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.7 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.7/plus.svg b/doc/v1.1.7/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.7/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.7/plusd.svg b/doc/v1.1.7/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.7/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.7/search/all_0.js b/doc/v1.1.7/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/doc/v1.1.7/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.7/search/all_1.js b/doc/v1.1.7/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/doc/v1.1.7/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.7/search/all_2.js b/doc/v1.1.7/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/doc/v1.1.7/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.7/search/all_3.js b/doc/v1.1.7/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.7/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.7/search/all_4.js b/doc/v1.1.7/search/all_4.js new file mode 100644 index 0000000..32d8d9a --- /dev/null +++ b/doc/v1.1.7/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['liveness_20tracking_1',['Liveness Tracking',['../index.html#liveness',1,'']]] +]; diff --git a/doc/v1.1.7/search/all_5.js b/doc/v1.1.7/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/doc/v1.1.7/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/doc/v1.1.7/search/all_6.js b/doc/v1.1.7/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.7/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.7/search/all_7.js b/doc/v1.1.7/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.7/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.7/search/all_8.js b/doc/v1.1.7/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.7/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.7/search/all_9.js b/doc/v1.1.7/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/doc/v1.1.7/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.7/search/all_a.js b/doc/v1.1.7/search/all_a.js new file mode 100644 index 0000000..a57ca9e --- /dev/null +++ b/doc/v1.1.7/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['tracking_2',['Liveness Tracking',['../index.html#liveness',1,'']]], + ['ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.7/search/close.svg b/doc/v1.1.7/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.7/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.7/search/enums_0.js b/doc/v1.1.7/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.7/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.7/search/enumvalues_0.js b/doc/v1.1.7/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.7/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.7/search/files_0.js b/doc/v1.1.7/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.7/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.7/search/functions_0.js b/doc/v1.1.7/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.7/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.7/search/mag.svg b/doc/v1.1.7/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.7/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.7/search/mag_d.svg b/doc/v1.1.7/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.7/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.7/search/mag_sel.svg b/doc/v1.1.7/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.7/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.7/search/mag_seld.svg b/doc/v1.1.7/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.7/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.7/search/pages_0.js b/doc/v1.1.7/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.7/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.7/search/pages_1.js b/doc/v1.1.7/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.7/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.7/search/pages_2.js b/doc/v1.1.7/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.7/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.7/search/pages_3.js b/doc/v1.1.7/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.7/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.7/search/search.css b/doc/v1.1.7/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.7/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.7/search/search.js b/doc/v1.1.7/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.7/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/splitbard.png b/doc/v1.1.7/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/sync_off.png b/doc/v1.1.7/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/sync_on.png b/doc/v1.1.7/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/tab_a.png b/doc/v1.1.7/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/tab_ad.png b/doc/v1.1.7/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/tab_s.png b/doc/v1.1.7/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/tab_sd.png b/doc/v1.1.7/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.7/tabs.css b/doc/v1.1.7/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.7/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.8/bc_s.png b/doc/v1.1.8/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/bc_sd.png b/doc/v1.1.8/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/closed.png b/doc/v1.1.8/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.8/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..a7c3276 --- /dev/null +++ b/doc/v1.1.8/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.8/doc.svg b/doc/v1.1.8/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.8/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.8/docd.svg b/doc/v1.1.8/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.8/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.8/doxygen.css b/doc/v1.1.8/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.8/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.8/doxygen.svg b/doc/v1.1.8/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.8/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.8/dynsections.js b/doc/v1.1.8/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.8/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.8/files.html b/doc/v1.1.8/files.html new file mode 100644 index 0000000..b0cc394 --- /dev/null +++ b/doc/v1.1.8/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.8/folderclosed.svg b/doc/v1.1.8/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.8/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.8/folderclosedd.svg b/doc/v1.1.8/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.8/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.8/folderopen.svg b/doc/v1.1.8/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.8/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.8/folderopend.svg b/doc/v1.1.8/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.8/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.8/globals.html b/doc/v1.1.8/globals.html new file mode 100644 index 0000000..5c9fb10 --- /dev/null +++ b/doc/v1.1.8/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.8/globals_enum.html b/doc/v1.1.8/globals_enum.html new file mode 100644 index 0000000..2755963 --- /dev/null +++ b/doc/v1.1.8/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.8/globals_eval.html b/doc/v1.1.8/globals_eval.html new file mode 100644 index 0000000..1ede891 --- /dev/null +++ b/doc/v1.1.8/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.8/globals_func.html b/doc/v1.1.8/globals_func.html new file mode 100644 index 0000000..8bdb246 --- /dev/null +++ b/doc/v1.1.8/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.8/globals_type.html b/doc/v1.1.8/globals_type.html new file mode 100644 index 0000000..e3f0f48 --- /dev/null +++ b/doc/v1.1.8/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.8/index.html b/doc/v1.1.8/index.html new file mode 100644 index 0000000..a730233 --- /dev/null +++ b/doc/v1.1.8/index.html @@ -0,0 +1,210 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.8 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may have a key "minProtocolVersion", used to increase the minimum protocol version advertised as supported by libpaf to that server. If "minProtocolVersion" is set higher than the maximum version suported by libpaf (i.e., > 3), no connections will be initiated to that server.

    +

    A server object may have the key "maxProtocolVersion", used to decrease the maximum protocol version advertised by libpaf. If the "maxProtocolVersion" is set lower than the minimum version supported by libpaf (i.e., < 2), no connections will be initiated to that server.

    +

    If both "minProtocolVersion" and "maxProtocolVersion" are set, "minProtocolVersion" must be equal to or lower than "maxProtocolVersion".

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "minProtocolVersion": 3,
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam"
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    "maxProtocolVersion": 2,
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Liveness Tracking

    +

    On connections where the Pathfinder protocol version 3 is negotiated to be used, libpaf performs server liveness tracking on the level of the Pathfinder protocol.

    +

    On v3 connections, libpaf imposes an upper limit on how long time the remote peer is allowed to remain idle. When maximum idle time is approaching, libpaf will query the server to ensure it is still alive. In case the server also employs liveness checking, any server queries will be treated as a sign of life, and make libpaf post-poned any liveness query.

    +

    The maximum idle time is 30 seconds by default, and may be overriden by setting the PAF_IDLE_MAX environment variable.

    +

    The actual max idle time used may be lower than PAF_IDLE_MAX, in case low-TTL services have been published by the application, or have been matched in one of its subscriptions.

    +

    The actual max idle time will never be set to lower than PAF_IDLE_MIN, which is 4 seconds by default. To protect the server, libpaf will treat PAF_IDLE_MIN set lower than 1 second as set to 1 second.

    +

    On version 2 connections, libpaf depends on the transport protocol (e.g., TCP) for liveness checking.

    +

    On version 3 connections, TCP keepalive is disabled.

    +

    The minimum idle time is also used as an upper bound for the total amount of time the initial transport connection establishment (e.g., TCP three-way handshake and TLS hello) and the Pathfinder protocol-level hello transaction is allowed to take.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service published using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    For a description of how service TTLs work in Pathfinder, please refer to the Pathfinder protocol specification.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.8/jquery.js b/doc/v1.1.8/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.8/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.8/menu.js b/doc/v1.1.8/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.8/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.8/menudata.js b/doc/v1.1.8/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.8/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.8/minus.svg b/doc/v1.1.8/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.8/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.8/minusd.svg b/doc/v1.1.8/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.8/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.8/nav_f.png b/doc/v1.1.8/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/nav_fd.png b/doc/v1.1.8/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/nav_g.png b/doc/v1.1.8/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/open.png b/doc/v1.1.8/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.8/paf_8h_source.html b/doc/v1.1.8/paf_8h_source.html new file mode 100644 index 0000000..a7f97ec --- /dev/null +++ b/doc/v1.1.8/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    292#include <stdint.h>
    +
    293#include <sys/types.h>
    +
    294
    +
    295#include <paf_props.h>
    +
    296#include <paf_match.h>
    +
    297#include <paf_err.h>
    +
    298
    +
    299struct paf_context;
    +
    300
    +
    323struct paf_context *paf_attach(const char *domain_name);
    +
    324
    +
    347int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    348
    +
    376int paf_modify(struct paf_context *context, int64_t service_id,
    +
    377 const struct paf_props *props);
    +
    378
    +
    397void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    398
    +
    417void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    418
    +
    455int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    456 paf_match_cb match_cb, void *user);
    +
    457
    +
    470void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    471
    +
    497int paf_fd(struct paf_context *context);
    +
    498
    +
    533int paf_process(struct paf_context *context);
    +
    534
    +
    558void paf_detach(struct paf_context *context);
    +
    559
    +
    574void paf_close(struct paf_context *context);
    +
    575
    +
    601char *paf_filter_escape(const char *s);
    +
    602
    +
    603#ifdef __cplusplus
    +
    604}
    +
    605#endif
    +
    606#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.8/paf__err_8h_source.html b/doc/v1.1.8/paf__err_8h_source.html new file mode 100644 index 0000000..1c874d2 --- /dev/null +++ b/doc/v1.1.8/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.8/paf__match_8h.html b/doc/v1.1.8/paf__match_8h.html new file mode 100644 index 0000000..412b7c3 --- /dev/null +++ b/doc/v1.1.8/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.8/paf__match_8h_source.html b/doc/v1.1.8/paf__match_8h_source.html new file mode 100644 index 0000000..8c8c6f9 --- /dev/null +++ b/doc/v1.1.8/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.8/paf__props_8h.html b/doc/v1.1.8/paf__props_8h.html new file mode 100644 index 0000000..3020e0a --- /dev/null +++ b/doc/v1.1.8/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.8/paf__props_8h_source.html b/doc/v1.1.8/paf__props_8h_source.html new file mode 100644 index 0000000..4d7a294 --- /dev/null +++ b/doc/v1.1.8/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.8/paf__value_8h.html b/doc/v1.1.8/paf__value_8h.html new file mode 100644 index 0000000..2438ce5 --- /dev/null +++ b/doc/v1.1.8/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.8/paf__value_8h_source.html b/doc/v1.1.8/paf__value_8h_source.html new file mode 100644 index 0000000..277b79e --- /dev/null +++ b/doc/v1.1.8/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.8 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.8/plus.svg b/doc/v1.1.8/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.8/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.8/plusd.svg b/doc/v1.1.8/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.8/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.8/search/all_0.js b/doc/v1.1.8/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/doc/v1.1.8/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.8/search/all_1.js b/doc/v1.1.8/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/doc/v1.1.8/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.8/search/all_2.js b/doc/v1.1.8/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/doc/v1.1.8/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.8/search/all_3.js b/doc/v1.1.8/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.8/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.8/search/all_4.js b/doc/v1.1.8/search/all_4.js new file mode 100644 index 0000000..32d8d9a --- /dev/null +++ b/doc/v1.1.8/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['liveness_20tracking_1',['Liveness Tracking',['../index.html#liveness',1,'']]] +]; diff --git a/doc/v1.1.8/search/all_5.js b/doc/v1.1.8/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/doc/v1.1.8/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/doc/v1.1.8/search/all_6.js b/doc/v1.1.8/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.8/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.8/search/all_7.js b/doc/v1.1.8/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.8/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.8/search/all_8.js b/doc/v1.1.8/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.8/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.8/search/all_9.js b/doc/v1.1.8/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/doc/v1.1.8/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.8/search/all_a.js b/doc/v1.1.8/search/all_a.js new file mode 100644 index 0000000..a57ca9e --- /dev/null +++ b/doc/v1.1.8/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['tracking_2',['Liveness Tracking',['../index.html#liveness',1,'']]], + ['ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.8/search/close.svg b/doc/v1.1.8/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.8/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.8/search/enums_0.js b/doc/v1.1.8/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.8/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.8/search/enumvalues_0.js b/doc/v1.1.8/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.8/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.8/search/files_0.js b/doc/v1.1.8/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.8/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.8/search/functions_0.js b/doc/v1.1.8/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.8/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.8/search/mag.svg b/doc/v1.1.8/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.8/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.8/search/mag_d.svg b/doc/v1.1.8/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.8/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.8/search/mag_sel.svg b/doc/v1.1.8/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.8/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.8/search/mag_seld.svg b/doc/v1.1.8/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.8/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.8/search/pages_0.js b/doc/v1.1.8/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.8/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.8/search/pages_1.js b/doc/v1.1.8/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.8/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.8/search/pages_2.js b/doc/v1.1.8/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.8/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.8/search/pages_3.js b/doc/v1.1.8/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.8/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.8/search/search.css b/doc/v1.1.8/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.8/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.8/search/search.js b/doc/v1.1.8/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.8/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/splitbard.png b/doc/v1.1.8/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/sync_off.png b/doc/v1.1.8/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/sync_on.png b/doc/v1.1.8/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/tab_a.png b/doc/v1.1.8/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/tab_ad.png b/doc/v1.1.8/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/tab_s.png b/doc/v1.1.8/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/tab_sd.png b/doc/v1.1.8/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.8/tabs.css b/doc/v1.1.8/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.8/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/doc/v1.1.9/bc_s.png b/doc/v1.1.9/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/bc_sd.png b/doc/v1.1.9/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/closed.png b/doc/v1.1.9/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/v1.1.9/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..970525e --- /dev/null +++ b/doc/v1.1.9/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,103 @@ + + + + + + + +libpaf: include Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    include Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Files

     paf.h
     Core Pathfinder Client Library API.
     
     paf_err.h
     
     paf_match.h
     Pathfinder Client Library's Subscription Match-related Data Structure.
     
     paf_props.h
     Pathfinder Service Properties API.
     
     paf_value.h
     Pathfinder Property Value API.
     
    +
    + + + + diff --git a/doc/v1.1.9/doc.svg b/doc/v1.1.9/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/doc/v1.1.9/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.9/docd.svg b/doc/v1.1.9/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/doc/v1.1.9/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.9/doxygen.css b/doc/v1.1.9/doxygen.css new file mode 100644 index 0000000..009a9b5 --- /dev/null +++ b/doc/v1.1.9/doxygen.css @@ -0,0 +1,2045 @@ +/* The standard CSS for doxygen 1.9.8*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 15px; +} + +div.toc li.level4 { + margin-left: 15px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doc/v1.1.9/doxygen.svg b/doc/v1.1.9/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/doc/v1.1.9/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/v1.1.9/dynsections.js b/doc/v1.1.9/dynsections.js new file mode 100644 index 0000000..b73c828 --- /dev/null +++ b/doc/v1.1.9/dynsections.js @@ -0,0 +1,192 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + var id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + var start = $(this).attr('data-start'); + var end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + var line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); +} + +/* @license-end */ diff --git a/doc/v1.1.9/files.html b/doc/v1.1.9/files.html new file mode 100644 index 0000000..dfe60b9 --- /dev/null +++ b/doc/v1.1.9/files.html @@ -0,0 +1,91 @@ + + + + + + + +libpaf: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    File List
    +
    +
    +
    Here is a list of all documented files with brief descriptions:
    +
    [detail level 12]
    + + + + + + +
      include
     paf.hCore Pathfinder Client Library API
     paf_err.h
     paf_match.hPathfinder Client Library's Subscription Match-related Data Structure
     paf_props.hPathfinder Service Properties API
     paf_value.hPathfinder Property Value API
    +
    +
    + + + + diff --git a/doc/v1.1.9/folderclosed.svg b/doc/v1.1.9/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/doc/v1.1.9/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.9/folderclosedd.svg b/doc/v1.1.9/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/doc/v1.1.9/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/doc/v1.1.9/folderopen.svg b/doc/v1.1.9/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/doc/v1.1.9/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/doc/v1.1.9/folderopend.svg b/doc/v1.1.9/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/doc/v1.1.9/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/doc/v1.1.9/globals.html b/doc/v1.1.9/globals.html new file mode 100644 index 0000000..e89fff6 --- /dev/null +++ b/doc/v1.1.9/globals.html @@ -0,0 +1,121 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.9/globals_enum.html b/doc/v1.1.9/globals_enum.html new file mode 100644 index 0000000..dc15ea3 --- /dev/null +++ b/doc/v1.1.9/globals_enum.html @@ -0,0 +1,81 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enums with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.9/globals_eval.html b/doc/v1.1.9/globals_eval.html new file mode 100644 index 0000000..f319d16 --- /dev/null +++ b/doc/v1.1.9/globals_eval.html @@ -0,0 +1,83 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented enum values with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.9/globals_func.html b/doc/v1.1.9/globals_func.html new file mode 100644 index 0000000..f017786 --- /dev/null +++ b/doc/v1.1.9/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented functions with links to the documentation:
    + +

    - p -

    +
    + + + + diff --git a/doc/v1.1.9/globals_type.html b/doc/v1.1.9/globals_type.html new file mode 100644 index 0000000..2f13111 --- /dev/null +++ b/doc/v1.1.9/globals_type.html @@ -0,0 +1,82 @@ + + + + + + + +libpaf: Globals + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented typedefs with links to the documentation:
    +
    + + + + diff --git a/doc/v1.1.9/index.html b/doc/v1.1.9/index.html new file mode 100644 index 0000000..1280800 --- /dev/null +++ b/doc/v1.1.9/index.html @@ -0,0 +1,213 @@ + + + + + + + +libpaf: Pathfinder Client Library API + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Pathfinder Client Library API
    +
    +
    + +

    This is the documentation for the Pathfinder Client Library API.

    + +
    Author
    Mattias Rönnblom
    +
    Version
    0.1 [API]
    +
    +1.1.9 [Implementation]
    +

    +Overview

    +

    The Pathfinder Client Library API is used to access one or more Pathfinder service discovery domains, either as a service producer or consumer.

    +

    All the functions in this API are non-blocking in the sense that no blocking system calls are made.

    +

    For a description of the Pathfinder data model, refer to the Pathfinder Protocol Specification. Note: there are important semantical differences between certain operations on the protocol level, compared to this API (e.g., paf_publish() doesn't have the exact same semantics as the publish protocol-level command).

    +

    +Service Discovery Domains

    +

    A Pathfinder service discovery domain is a namespace shared by all Pathfinder clients attached to that domain. A service publish by one client can be seen by all other clients attached to that domain. A domain is served by one or more Pathfinder server instances.

    +

    In order to participate in a domain, an application issues paf_attach() with the appropriate service discovery domain name. It need not know what servers are currently serving that domain.

    +

    +Domain Configuration

    +

    The mapping between a service discovery domain name and the set of addresses to the Pathfinder servers serving this domain is kept in a file. The configuration for a particular domain name must be stored in a file with the same name as the domain, and be located in the domain files directory. The compile-time default location is is /run/paf/domains.d/.

    +

    The directory may contain an arbitrary number of domains.

    +

    In case the domain file does not exist at the time of the paf_attach() call, libpaf will periodically check if it has been created.

    +

    In case the file is modified (e.g., a server is added, removed or has its address changed), the file will be re-read by libpaf. If the file is removed, the set of servers is considered empty.

    +

    The environment variable PAF_DOMAINS may set in case a non-standard directory is preferred over the default.

    +

    +File Format

    +

    libpaf supports two file formats. Either the contents of the file is a newline-separated list of XCM addresses, or a JSON object.

    +

    The newline-separated format allows for comments. In this format, empty lines and lines beginning with '#' are ignored. JSON does not support comments.

    +

    A domain file in the JSON format must contain a root JSON object, with a key "servers". The value of "servers" must be an array of zero or more JSON objects, each representing a server.

    +

    The server object must have a key "address", with the server's address in XCM format as its value.

    +

    A server object may have a key "localAddress", in which case this XCM-formatted address will be bound to before establishing an outgoing connection.

    +

    A server object may have a key "minProtocolVersion", used to increase the minimum protocol version advertised as supported by libpaf to that server. If "minProtocolVersion" is set higher than the maximum version suported by libpaf (i.e., > 3), no connections will be initiated to that server.

    +

    A server object may have the key "maxProtocolVersion", used to decrease the maximum protocol version advertised by libpaf. If the "maxProtocolVersion" is set lower than the minimum version supported by libpaf (i.e., < 2), no connections will be initiated to that server.

    +

    If both "minProtocolVersion" and "maxProtocolVersion" are set, "minProtocolVersion" must be equal to or lower than "maxProtocolVersion".

    +

    A server object may have a keys "minIdleTime" or "maxIdleTime" to configure client-side Liveness Tracking, and override the PAF_IDLE_MIN and PAF_IDLE_MAX values and the compile-time defaults (in case the environment variables are not set).

    +

    If both "minIdleTime" and "maxIdleTime" are set, "minIdleTime" must be equal to or lower than "maxIdleTime".

    +

    A server object may include a key "networkNamespace". If present, the library will make sure the outoing transport layer connection originates from a Linux network namespace named per the key's value. To switch between network namespaces, the process needs the CAP_SYS_ADMIN capability. The network namespace needs to be named as per iproute2 conventions.

    +

    In case the transport protocol uses TLS, a number of optional keys may be present in the server object:

    +
      +
    • "tlsCertificateFile": the leaf certificate to use.
    • +
    • "tlsKeyFile": the private key corresponding to the leaf certificate.
    • +
    • "tlsTrustedCaFile": a file containing the trusted CA certificates.
    • +
    • "tlsCrlFile": a file containing Certificate Revocation Lists (CRLs).
    • +
    +

    Setting tlsCrlFile will enable certificate revocation verification, and requires libpaf to be linked to libxcm version v1.9.0 or later.

    +

    In case some/all of the certificate file related keys are left out, libpaf will fall back to using the XCM defaults.

    +

    Below is an example of a domain file in JSON format:

    {
    +
    "servers": [
    +
    {
    +
    "address": "tls:1.2.3.4:4444",
    +
    "tlsCertificateFile": "/etc/paf/certs/cert.pem",
    +
    "tlsKeyFile": "/etc/paf/certs/key.pem",
    +
    "tlsTrustedCaFile": "/etc/paf/certs/ca-bundle.pem"
    +
    },
    +
    {
    +
    "address": "tls:5.6.7.8:8888",
    +
    "minProtocolVersion": 3,
    +
    "localAddress": "tls:9.9.9.9:0"
    +
    },
    +
    {
    +
    "address": "tcp:fqdn:1111",
    +
    "networkNamespace": "oam",
    +
    "minIdleTime": 10
    +
    },
    +
    {
    +
    "address": "ux:foo"
    +
    "maxProtocolVersion": 2,
    +
    }
    +
    ]
    +
    }
    +

    The same configuration (minus the network namespace and the certificate-related configuration), but in the newline-separated format:

    tls:1.2.3.4:4444
    +
    tls:5.6.7.8:8888
    +
    tcp:fqdn:1111
    +
    ux:foo
    +

    +Domain File Rescan

    +

    For all domains the application currently has attached to, libpaf tracks domain file changes. This check is performed periodically every ~5 s. A small random component is added to avoid load spikes, in case there are many clients on the same system.

    +

    This default interval may be changed by setting the PAF_RESCAN environment variable. The value a floating point number (in s). If set to zero, the rescanning is disabled.

    +

    +Connection Reestablishment

    +

    In case the connection to a server is lost, or never was successfully established in the first place, libpaf will perform another attempt at a later time.

    +

    libpaf uses exponential back-off. The first retry is scheduled to occur after 10 ms. Every failed attempt double the retry interval, up to a maximum of 5 s. These two defaults may be changed by setting the PAF_RECONNECT_MIN and/or PAF_RECONNECT_MAX environment variables.

    +

    +Liveness Tracking

    +

    On connections where the Pathfinder protocol version 3 is negotiated to be used, libpaf performs server liveness tracking on the level of the Pathfinder protocol.

    +

    On v3 connections, libpaf imposes an upper limit on how long time the remote peer is allowed to remain idle. When maximum idle time is approaching, libpaf will query the server to ensure it is still alive. In case the server also employs liveness checking, any server queries will be treated as a sign of life, and make libpaf post-poned any liveness query.

    +

    The maximum idle time is 30 seconds by default, and may be overriden by setting the PAF_IDLE_MAX environment variable.

    +

    The actual max idle time used may be lower than PAF_IDLE_MAX, in case low-TTL services have been published by the application, or have been matched in one of its subscriptions.

    +

    The actual max idle time will never be set to lower than PAF_IDLE_MIN, which is 4 seconds by default. To protect the server, libpaf will treat PAF_IDLE_MIN set lower than 1 second as set to 1 second.

    +

    On version 2 connections, libpaf depends on the transport protocol (e.g., TCP) for liveness checking.

    +

    On version 3 connections, TCP keepalive is disabled.

    +

    The minimum idle time is also used as an upper bound for the total amount of time the initial transport connection establishment (e.g., TCP three-way handshake and TLS hello) and the Pathfinder protocol-level hello transaction is allowed to take.

    +

    +DNS and Multihomed Servers

    +

    The host part of the XCM server address in the Domain Configuration may either be a DNS hostname or an IP address in string format. If a Pathfinder server DNS hostname resolves to multiple A or AAAA records, libpaf will interpret that as a single, multihomed, server.

    +

    In such a scenario, libpaf will attempt to establish a TCP connection the server via all available IP addresses, but will employ only at most one connection for the actual Pathfinder protocol signaling. The Happy Eyeballs (RFC 6555) method is used.

    +

    Multihomed servers are only supported when libpaf is running linked to XCM v1.9.0 (or later). For older XCM versions, only the first (i.e., most preferred) IP address will be considered.

    +

    +Service TTL

    +

    A service published using libpaf has a time-to-live (TTL) of 30 s. This default may be changed by setting the PAF_TTL environment variable, before the paf_publish() call.

    +

    The paf_set_ttl() function may be used to update the TTL for a specific service.

    +

    For a description of how service TTLs work in Pathfinder, please refer to the Pathfinder protocol specification.

    +

    +Tracing

    +

    libpaf comes with built-in support for tracing. The library supports writing traces to stderr in human-readable format, or direct them to LTTng. The former is always available, and the latter is available if the library is built with LTTng support.

    +

    To enable stderr-type tracing, set the PAF_DEBUG environment variable to "1", before starting the application.

    +

    To enabled LTTng tracing, enable the relevant libpaf LTTng tracepoints.

    +

    +Multi-thread Safety

    +

    All API calls are multi-thread (MT) safe when called on different context (for paf.h API calls) or service properties (for paf_props.h API calls). Thus, one thread may safely call paf_publish(), while another thread calls the same (or a different) paf_*() function, but on another context.

    +

    No API calls are MT safe when called on the same context or service properties. For that to work, external synchronization (e.g., a mutex lock) is required.

    +
    +
    + + + + diff --git a/doc/v1.1.9/jquery.js b/doc/v1.1.9/jquery.js new file mode 100644 index 0000000..1dffb65 --- /dev/null +++ b/doc/v1.1.9/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
  • "),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
    ').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/doc/v1.1.9/menu.js b/doc/v1.1.9/menu.js new file mode 100644 index 0000000..b0b2693 --- /dev/null +++ b/doc/v1.1.9/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
      '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
    • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
    • '; + } + result+='
    '; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
    '+ + '
    '+ + '
     '+ + ''+ + '
    '+ + '
    '+ + '
    '+ + '
    '; + } else { + searchBoxHtml='
    '+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
    '; + } + } + + $('#main-nav').before('
    '+ + ''+ + ''+ + '
    '); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/v1.1.9/menudata.js b/doc/v1.1.9/menudata.js new file mode 100644 index 0000000..fe25dec --- /dev/null +++ b/doc/v1.1.9/menudata.js @@ -0,0 +1,36 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"p",url:"globals.html#index_p"}]}, +{text:"Functions",url:"globals_func.html",children:[ +{text:"p",url:"globals_func.html#index_p"}]}, +{text:"Typedefs",url:"globals_type.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}]}]}]} diff --git a/doc/v1.1.9/minus.svg b/doc/v1.1.9/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/doc/v1.1.9/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.9/minusd.svg b/doc/v1.1.9/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/doc/v1.1.9/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doc/v1.1.9/nav_f.png b/doc/v1.1.9/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/nav_fd.png b/doc/v1.1.9/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/nav_g.png b/doc/v1.1.9/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/open.png b/doc/v1.1.9/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +libpaf: include/paf.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf.h File Reference
    +
    +
    + +

    Core Pathfinder Client Library API. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +#include <paf_match.h>
    +#include <paf_err.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_context * paf_attach (const char *domain_name)
     
    int64_t paf_publish (struct paf_context *context, const struct paf_props *props)
     
    int paf_modify (struct paf_context *context, int64_t service_id, const struct paf_props *props)
     
    void paf_set_ttl (struct paf_context *context, int64_t service_id, int64_t ttl)
     
    void paf_unpublish (struct paf_context *context, int64_t service_id)
     
    int64_t paf_subscribe (struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
     
    void paf_unsubscribe (struct paf_context *context, int64_t subscription_id)
     
    int paf_fd (struct paf_context *context)
     
    int paf_process (struct paf_context *context)
     
    void paf_detach (struct paf_context *context)
     
    void paf_close (struct paf_context *context)
     
    char * paf_filter_escape (const char *s)
     
    +

    Detailed Description

    +

    Core Pathfinder Client Library API.

    +

    Function Documentation

    + +

    ◆ paf_attach()

    + +
    +
    + + + + + + + + +
    struct paf_context * paf_attach (const char * domain_name)
    +
    +

    Attach to a domain.

    +

    This function attaches to a Pathfinder domain. The return value is a context, which is used to store library-internal service and subscription state as handed to it by the application, and subscription matches from a remote server, as well as protocol-related state for server communication.

    +

    paf_attach() will succeed even though the domain doesn't currently exists on the local system. Any remote communication failure, to the extent any such happens during paf_attach(), also doesn't make the call fail.

    +

    A context may not be left unattended. See paf_process() for details how to avoid such a situation.

    +
    Parameters
    + + +
    [in]domain_nameThe name of the Pathfinder domain.
    +
    +
    +
    Returns
    Returns a context reference on success, or NULL if the system didn't have adequate resources to fulfill the request.
    + +
    +
    + +

    ◆ paf_publish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    int64_t paf_publish (struct paf_context * context,
    const struct paf_props * props 
    )
    +
    +

    Publish a service.

    +

    This function allows the application to inform the library of a service it wishes to have published at any time the context has an connection to a server, serving that domain.

    +

    The successful return of paf_publish() indicates that the service as been accepted into the library's context. It does not mean that the service has yet been successfully published in a server, or even that there is a connection to a server. Actual publication may be deferred until the next, or some future, paf_process() call.

    +
    Parameters
    + + + +
    [in]contextA reference to the domain where the service should be published.
    [in]propsThe properties of this service. Must be non-NULL, but may be an empty set.
    +
    +
    +
    Returns
    Returns a unique id for this service on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties' maximum size was exceeded.
    + +
    +
    + +

    ◆ paf_modify()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int paf_modify (struct paf_context * context,
    int64_t service_id,
    const struct paf_props * props 
    )
    +
    +

    Modify a service's properties.

    +

    This function modifies an already-published service's properties.

    +

    The successful return of this function means the changes have been commited to the supplied context, but does not mean they have propagated further (i.e to the server or to any other client, including subscriptions issued via this context).

    +

    The properties supplied in props will replace those currently in use by the service. Thus, all previous properties will be removed, and replaced in their entirety by those in props.

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]propsThe properties that should replace the service current properties.
    +
    +
    +
    Returns
    Returns 0 on success, or < 0 or failure.
    + + + + + +
    Return Code Description
    PAF_ERR_PROPS_TOO_LARGE The service properties maxiumum size was been exceeded.
    + +
    +
    + +

    ◆ paf_set_ttl()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_set_ttl (struct paf_context * context,
    int64_t service_id,
    int64_t ttl 
    )
    +
    +

    Change service TTL.

    +

    This function modifies an already-published service's time to live (TTL) setting.

    +

    The successful return of this function means the change has been committed in the supplied context. It may or may not have propagated further (i.e to the server or to any other client).

    +

    Only services published using the supplied context may be modified.

    +
    Parameters
    + + + + +
    [in]contextA reference to the service's domain.
    [in]service_idThe id of the service as returned by paf_publish().
    [in]ttlA non-negative integer specifying the new TTL (in s).
    +
    +
    + +
    +
    + +

    ◆ paf_unpublish()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unpublish (struct paf_context * context,
    int64_t service_id 
    )
    +
    +

    Unpublish a service.

    +

    This function allows the application to inform the library of a Pathfinder service it wishes to have a previously published service removed.

    +

    In case the service is currently published in a server, it may not yet have been removed at the time of paf_unpublish() call completion. There might not even be a connection to the server (where the service may still be lingering in an orphan state).

    +

    Only services published using the supplied context may be unpublished.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the service was published.
    [in]service_idThe id of the service as returned by paf_publish().
    +
    +
    + +
    +
    + +

    ◆ paf_subscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    int64_t paf_subscribe (struct paf_context * context,
    const char * filter,
    paf_match_cb match_cb,
    void * user 
    )
    +
    +

    Issue a service subscription.

    +

    This function registers a service subscription in the supplied context.

    +

    The filter can be used to specify what services are interesting to the application.

    +

    The filter syntax is similar to that of LDAP (see RFC 2254), but with some differences, mainly in the area of the escaping mechanism (allowing special characters in search filter name or values).

    +

    A search filter example: (&(name=my-service)(area=51))

    +

    Supplying NULL in filter will results in a "match all" filter.

    +

    In case of a matching service appearing, is being modified, or disappeared, the match_cb function will be called. The callback function will only be called at the time of paf_process(). See paf_match_cb and paf_match_type for more information.

    +

    The successful return of paf_subscribe() does not guarantee that the subscription has been forwarded to a server.

    +
    Parameters
    + + + + + +
    [in]contextA reference to the domain in which the subscription should be issued.
    [in]filterA search filter in string format, or NULL.
    [in]match_cbThe callback used to notify the application of a matching service.
    [in]userA user-supplied opaque pointer which will be supplied back to the application at every match callback call.
    +
    +
    +
    Returns
    Returns a unique id for this subscription on success, or < 0 or failure.
    + + + + + + + +
    Return Code Description
    PAF_ERR_FILTER_TOO_LARGE The filter exceeds the maximum size.
    PAF_ERR_INVALID_FILTER_SYNTAX Invalid filter syntax.
    + +
    +
    + +

    ◆ paf_unsubscribe()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void paf_unsubscribe (struct paf_context * context,
    int64_t subscription_id 
    )
    +
    +

    Unsubscribe to a service.

    +

    This function cancels a subscription previously issued in the supplied context.

    +

    After paf_unsubscribe() call completition, the corresponding callback will no longer be called.

    +
    Parameters
    + + + +
    [in]contextA reference to the context in where the subscription was issued.
    [in]subscription_idThe id of the subscription as returned by paf_subscribe().
    +
    +
    + +
    +
    + +

    ◆ paf_fd()

    + +
    +
    + + + + + + + + +
    int paf_fd (struct paf_context * context)
    +
    +

    Query a context for it's file descriptor.

    +

    The file descriptor returned by this function allows the context to signal when a call paf_process() is likely to allow it to make progress. Progress here means things like receiving and processing Pathfinder wire protocol messages, handling timeout, and calling user callbacks.

    +

    The application should wait for the fd to become readable (i.e. it should be put into the readfds set for select(), or be marked POLLIN/EPOLLIN in case poll()/epoll() is used), and then call paf_process().

    +

    The file descriptor is stable (i.e the number doesn't change) across the life-time of the context. To what underlying file description it's pointing also doesn't change (a detail relevent for its use in epoll()). The fd is also unique to this context (i.e. several context will not reuse the same fd).

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns the context's file descriptor
    + +
    +
    + +

    ◆ paf_process()

    + +
    +
    + + + + + + + + +
    int paf_process (struct paf_context * context)
    +
    +

    Perform processing related to a particular context.

    +

    This function will processing related to the supplied context. Such processing can be things like establishing a connection to a server, sending messages to or receiving messages from a server or check for timeout on stale (orphan) services.

    +

    As a part of paf_process() call, the library may invoke one or more paf_match_cb subscription callbacks. Such a callback may not call back into any paf.h core API functions with the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc).

    +

    paf_process() may be called at any point, but will typically be called after select() (or equivalent I/O multiplexing function) has returned, and fds related to a particular context are the cause of the select() call being unblocked.

    +

    A context may not be left unattended (i.e. no calls to paf_process()) by the application for a long duration of time, unless the context's fds aren't becoming active. In other words, the context's fd should always be in the set of fds supplied by the application to select(), until up to the point it is closed with paf_close().

    +

    paf_process() will never fail, and the return value is only used to inform the application that the context detachment it ordered (via paf_detach()) has completed.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    +
    Returns
    Returns 0 or PAF_ERR_DETACHED, in case the context has finished the detach process.
    + +
    +
    + +

    ◆ paf_detach()

    + +
    +
    + + + + + + + + +
    void paf_detach (struct paf_context * context)
    +
    +

    Detach the context.

    +

    This function will initiate the process of detaching the context from any server, attempting to unpublish all services, remove all subscriptions, and finish any outstanding protocol transactions (e.g. unpublish operations that might not yet have finished).

    +

    To allow the detaching to happen, the application should continue to use select() for wait for the context's fd to become readable, and paf_process() to allow it to make progress.

    +

    paf_process() will return PAF_ERR_DETACHED when the process has completed (or timed out).

    +

    Since unpublication is a best-effort exercise, in case the server does not respond within a resonable time, detaching will finish.

    +

    After paf_detach() has been called, only paf_fd(), paf_process() and paf_close() may be called.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_close()

    + +
    +
    + + + + + + + + +
    void paf_close (struct paf_context * context)
    +
    +

    Close the context.

    +

    This function will free all resources associated with context.

    +

    It is legal to call this function, even if the context is still attached (i.e. paf_detach() was not called, or paf_process() has not yet returned PAF_ERR_DETACHED. If it was not detached the services will not be unpublished. Upon client disconnect, such services will be considered orphans, and will be available until their time-to-live (TTL) has expired.

    +
    Parameters
    + + +
    [in]contextThe context.
    +
    +
    + +
    +
    + +

    ◆ paf_filter_escape()

    + +
    +
    + + + + + + + + +
    char * paf_filter_escape (const char * s)
    +
    +

    Escape special characters for strings used in filters.

    +

    This function will copy the input string, escaping any characters which have a special meaning in the subscription filter language (see paf_subscribe()).

    +

    The input string may contain arbitrary non-NUL characters, and may be of arbitrary length. However, there is a maximum filter size.

    +

    Since the same escaping mechanism is used for both service property names and string values, paf_filter_escape() may be used for both types.

    +

    The string returned is heap-allocated, and it's the caller obligation to use free() to free its memory.

    +

    This function for creating filter expressions only. It is not needed and should not be used while creating service property string-type values (see paf_value.h) for use in paf_publish().

    +
    Parameters
    + + +
    [in]sThe service property name or string value to be escaped.
    +
    +
    +
    Returns
    Returns a copy of the string, with special characters escaped.
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.9/paf_8h_source.html b/doc/v1.1.9/paf_8h_source.html new file mode 100644 index 0000000..9541207 --- /dev/null +++ b/doc/v1.1.9/paf_8h_source.html @@ -0,0 +1,155 @@ + + + + + + + +libpaf: include/paf.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020-2021 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_H
    +
    7#define PAF_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    301#include <stdint.h>
    +
    302#include <sys/types.h>
    +
    303
    +
    304#include <paf_props.h>
    +
    305#include <paf_match.h>
    +
    306#include <paf_err.h>
    +
    307
    +
    308struct paf_context;
    +
    309
    +
    332struct paf_context *paf_attach(const char *domain_name);
    +
    333
    +
    356int64_t paf_publish(struct paf_context *context, const struct paf_props *props);
    +
    357
    +
    385int paf_modify(struct paf_context *context, int64_t service_id,
    +
    386 const struct paf_props *props);
    +
    387
    +
    406void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl);
    +
    407
    +
    426void paf_unpublish(struct paf_context *context, int64_t service_id);
    +
    427
    +
    464int64_t paf_subscribe(struct paf_context *context, const char *filter,
    +
    465 paf_match_cb match_cb, void *user);
    +
    466
    +
    479void paf_unsubscribe(struct paf_context *context, int64_t subscription_id);
    +
    480
    +
    506int paf_fd(struct paf_context *context);
    +
    507
    +
    542int paf_process(struct paf_context *context);
    +
    543
    +
    567void paf_detach(struct paf_context *context);
    +
    568
    +
    583void paf_close(struct paf_context *context);
    +
    584
    +
    610char *paf_filter_escape(const char *s);
    +
    611
    +
    612#ifdef __cplusplus
    +
    613}
    +
    614#endif
    +
    615#endif
    +
    int64_t paf_publish(struct paf_context *context, const struct paf_props *props)
    +
    int paf_fd(struct paf_context *context)
    +
    void paf_unsubscribe(struct paf_context *context, int64_t subscription_id)
    +
    struct paf_context * paf_attach(const char *domain_name)
    +
    int paf_process(struct paf_context *context)
    +
    int paf_modify(struct paf_context *context, int64_t service_id, const struct paf_props *props)
    +
    void paf_detach(struct paf_context *context)
    +
    void paf_close(struct paf_context *context)
    +
    void paf_set_ttl(struct paf_context *context, int64_t service_id, int64_t ttl)
    +
    char * paf_filter_escape(const char *s)
    +
    int64_t paf_subscribe(struct paf_context *context, const char *filter, paf_match_cb match_cb, void *user)
    +
    void paf_unpublish(struct paf_context *context, int64_t service_id)
    +
    Pathfinder Client Library's Subscription Match-related Data Structure.
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.9/paf__err_8h_source.html b/doc/v1.1.9/paf__err_8h_source.html new file mode 100644 index 0000000..7f2fb4b --- /dev/null +++ b/doc/v1.1.9/paf__err_8h_source.html @@ -0,0 +1,118 @@ + + + + + + + +libpaf: include/paf_err.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_err.h
    +
    +
    +
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_ERR_H
    +
    7#define PAF_ERR_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    12#include <stdint.h>
    +
    13
    +
    14const char *paf_strerror(int64_t return_code);
    +
    15
    +
    16#define PAF_ERR (-1)
    +
    17#define PAF_ERR_PROPS_TOO_LARGE (-2)
    +
    18#define PAF_ERR_BUFFER_TOO_SMALL (-3)
    +
    19#define PAF_ERR_FILTER_TOO_LARGE (-4)
    +
    20#define PAF_ERR_INVALID_FILTER_SYNTAX (-5)
    +
    21#define PAF_ERR_DETACHED (-6)
    +
    22
    +
    23#define PAF_IS_ERR(x) ((x) < 0 ? true : false)
    +
    24
    +
    25#ifdef __cplusplus
    +
    26}
    +
    27#endif
    +
    28#endif
    +
    + + + + diff --git a/doc/v1.1.9/paf__match_8h.html b/doc/v1.1.9/paf__match_8h.html new file mode 100644 index 0000000..464874a --- /dev/null +++ b/doc/v1.1.9/paf__match_8h.html @@ -0,0 +1,162 @@ + + + + + + + +libpaf: include/paf_match.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_match.h File Reference
    +
    +
    + +

    Pathfinder Client Library's Subscription Match-related Data Structure. +More...

    +
    #include <stdint.h>
    +#include <sys/types.h>
    +#include <paf_props.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
     
    + + + +

    +Enumerations

    enum  paf_match_type { paf_match_type_appeared +, paf_match_type_modified +, paf_match_type_disappeared + }
     
    +

    Detailed Description

    +

    Pathfinder Client Library's Subscription Match-related Data Structure.

    +

    Typedef Documentation

    + +

    ◆ paf_match_cb

    + +
    +
    + + + + +
    typedef void(* paf_match_cb) (enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    +
    +

    Callback to notify the application of matching services.

    +

    A subscription callback may not call back into any paf.h core API functions taking the current context as it's input (e.g. paf_subscribe(), paf_unsubscribe() etc). Such calls must be defered to after the callback has returned. Calls to other Pathfinder API functions, for example functions in paf_props.h or paf_value.h may be made.

    +
    Parameters
    + + + + + +
    [in]service_idThe service id of the matching service.
    [in]propsThe properties of the matching service. NULL for disappeared type matches.
    [in]match_typeThe type of match.
    [in]userAn application-supplied pointer (see paf_subscribe()).
    +
    +
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ paf_match_type

    + +
    +
    + + + + +
    enum paf_match_type
    +
    +

    Type of subscription match.

    + + + + +
    Enumerator
    paf_match_type_appeared 

    A service matched that was previously unseen in this subscription, either because it's newly published, because it had its properties changed in such a way they begun to match this subscriptions's search filter, or because the information about the service's existence hadn't propagated so far as to this context.

    +
    paf_match_type_modified 

    A service previously seen in this subscription, which have had its properties modified, but in such a way they still matching the subscription filter.

    +
    paf_match_type_disappeared 

    A service previously seen in this subscription was either unpublished or had its properties changed in such a way it no longer matched the subscription filter.

    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.9/paf__match_8h_source.html b/doc/v1.1.9/paf__match_8h_source.html new file mode 100644 index 0000000..da6af4e --- /dev/null +++ b/doc/v1.1.9/paf__match_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +libpaf: include/paf_match.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_match.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_MATCH_H
    +
    7#define PAF_MATCH_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    17#include <stdint.h>
    +
    18#include <sys/types.h>
    +
    19
    +
    20#include <paf_props.h>
    +
    21
    + +
    46
    +
    62typedef void (*paf_match_cb)(enum paf_match_type match_type,
    +
    63 int64_t service_id,
    +
    64 const struct paf_props *props,
    +
    65 void *user);
    +
    66
    +
    67#ifdef __cplusplus
    +
    68}
    +
    69#endif
    +
    70#endif
    +
    paf_match_type
    Definition paf_match.h:23
    +
    @ paf_match_type_disappeared
    Definition paf_match.h:44
    +
    @ paf_match_type_appeared
    Definition paf_match.h:32
    +
    @ paf_match_type_modified
    Definition paf_match.h:38
    +
    void(* paf_match_cb)(enum paf_match_type match_type, int64_t service_id, const struct paf_props *props, void *user)
    Definition paf_match.h:62
    +
    Pathfinder Service Properties API.
    +
    + + + + diff --git a/doc/v1.1.9/paf__props_8h.html b/doc/v1.1.9/paf__props_8h.html new file mode 100644 index 0000000..d28134e --- /dev/null +++ b/doc/v1.1.9/paf__props_8h.html @@ -0,0 +1,580 @@ + + + + + + + +libpaf: include/paf_props.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_props.h File Reference
    +
    +
    + +

    Pathfinder Service Properties API. +More...

    +
    #include <sys/types.h>
    +#include <paf_value.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Typedefs

    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    struct paf_props * paf_props_create (void)
     
    void paf_props_add (struct paf_props *props, const char *name, const struct paf_value *value)
     
    void paf_props_add_int64 (struct paf_props *props, const char *name, int64_t value)
     
    void paf_props_add_str (struct paf_props *props, const char *name, const char *value)
     
    size_t paf_props_get (const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
     
    const struct paf_value * paf_props_get_one (const struct paf_props *props, const char *prop_name)
     
    void paf_props_foreach (const struct paf_props *props, paf_props_foreach_cb cb, void *user)
     
    bool paf_props_equal (const struct paf_props *props_a, const struct paf_props *props_b)
     
    size_t paf_props_num_values (const struct paf_props *props)
     
    size_t paf_props_num_names (const struct paf_props *props)
     
    struct paf_props * paf_props_clone (const struct paf_props *orig)
     
    void paf_props_destroy (struct paf_props *props)
     
    +

    Detailed Description

    +

    Pathfinder Service Properties API.

    +

    Service properties are a multimap. Thus, each property name may be assoicated to one or more values.

    +

    Typedef Documentation

    + +

    ◆ paf_props_foreach_cb

    + +
    +
    + + + + +
    typedef void(* paf_props_foreach_cb) (const char *prop_name, const struct paf_value *prop_value, void *user)
    +
    +

    Callback function prototype used for iteration.

    + +
    +
    +

    Function Documentation

    + +

    ◆ paf_props_create()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_create (void )
    +
    +

    Create a service properties instance.

    +
    Returns
    An empty service properties instance.
    + +
    +
    + +

    ◆ paf_props_add()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add (struct paf_props * props,
    const char * name,
    const struct paf_value * value 
    )
    +
    +

    Add a property.

    +

    This function adds a property to props.

    +

    Both the name and the value will be copied, and thus will still be owned by the caller at call completion.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_int64()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_int64 (struct paf_props * props,
    const char * name,
    int64_t value 
    )
    +
    +

    Add a property with an integer value.

    +

    This function adds a property with an integer value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_add_str()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_add_str (struct paf_props * props,
    const char * name,
    const char * value 
    )
    +
    +

    Add a property with a string value.

    +

    This function adds a property with a string value to props.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]nameThe name of the property to be added.
    [in]valueThe value of the property to be added.
    +
    +
    + +
    +
    + +

    ◆ paf_props_get()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    size_t paf_props_get (const struct paf_props * props,
    const char * prop_name,
    const struct paf_value ** values,
    size_t capacity 
    )
    +
    +

    Retrieve all values for a particular property.

    +

    This function retrieves the zero-or-more values associated with the supplied prop_name, and stores them in values.

    +

    If values' capacity is to small to hold pointers to all values, as many values as can fit will be stored. The actual number of values present in props will be returned regardless.

    +

    In case capacity is 0, props may be left NULL. Such a call may be useful to allow pre-allocation of a suitably-sized values array, before the actual paf_props_get() call.

    +
    Parameters
    + + + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose values is to be retrieved.
    [out]valuesA pointer to an user-allocated array of paf_value pointers.
    [in]capacityThe number of elements values can hold.
    +
    +
    +
    Returns
    Returns the number of values associated with prop_name (even in the case this number is larger than capacity).
    + +
    +
    + +

    ◆ paf_props_get_one()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const struct paf_value * paf_props_get_one (const struct paf_props * props,
    const char * prop_name 
    )
    +
    +

    Retrieve a value for a particular property.

    +

    This function returns a value associated with the supplied prop_name.

    +
    Parameters
    + + + +
    [in]propsThe service properties instance.
    [in]prop_nameThe name of the property whose value is to be retrieved.
    +
    +
    +
    Returns
    Returns one of the values associated with prop_name, or NULL in case there is none.
    + +
    +
    + +

    ◆ paf_props_foreach()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void paf_props_foreach (const struct paf_props * props,
    paf_props_foreach_cb cb,
    void * user 
    )
    +
    +

    Iterate over all name-value pairs.

    +

    This function calls the supplied callback function cb for each property name-value pair in props.

    +

    props may not be modified during the iteration.

    +
    Parameters
    + + + + +
    [in]propsThe service properties instance.
    [in]cbThe callback function.
    [in]userAn opaque pointer, supplied back to the application in every cb call.
    +
    +
    + +
    +
    + +

    ◆ paf_props_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_props_equal (const struct paf_props * props_a,
    const struct paf_props * props_b 
    )
    +
    +

    Compares two property multimaps for equality (by value).

    +
    Parameters
    + + + +
    [in]props_aA service properties instance.
    [in]props_bA service properties instance.
    +
    +
    +
    Returns
    Returns true if props_a and props_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_props_num_values()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_values (const struct paf_props * props)
    +
    +

    Returns the total number of property name-value pairs.

    +

    This function returns the total number of name-value pairs in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of values.
    + +
    +
    + +

    ◆ paf_props_num_names()

    + +
    +
    + + + + + + + + +
    size_t paf_props_num_names (const struct paf_props * props)
    +
    +

    Returns the total number of property names in the properties instance.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    +
    Returns
    Returns the total number of names.
    + +
    +
    + +

    ◆ paf_props_clone()

    + +
    +
    + + + + + + + + +
    struct paf_props * paf_props_clone (const struct paf_props * orig)
    +
    +

    Returns a copy of the supplied properties instance.

    +
    Parameters
    + + +
    [in]origThe service properties instance to be copied.
    +
    +
    +
    Returns
    Returns a copy of the properties instance.
    + +
    +
    + +

    ◆ paf_props_destroy()

    + +
    +
    + + + + + + + + +
    void paf_props_destroy (struct paf_props * props)
    +
    +

    Destroys a properties instance.

    +

    This function destroys the properties instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]propsThe service properties instance.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.9/paf__props_8h_source.html b/doc/v1.1.9/paf__props_8h_source.html new file mode 100644 index 0000000..564a436 --- /dev/null +++ b/doc/v1.1.9/paf__props_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +libpaf: include/paf_props.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_props.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_PROPS_H
    +
    7#define PAF_PROPS_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    20#include <sys/types.h>
    +
    21
    +
    22#include <paf_value.h>
    +
    23
    +
    24struct paf_props;
    +
    25
    +
    31struct paf_props *paf_props_create(void);
    +
    32
    +
    33
    +
    46void paf_props_add(struct paf_props *props, const char *name,
    +
    47 const struct paf_value *value);
    +
    48
    +
    59void paf_props_add_int64(struct paf_props *props, const char *name,
    +
    60 int64_t value);
    +
    61
    +
    71void paf_props_add_str(struct paf_props *props, const char *name,
    +
    72 const char *value);
    +
    73
    +
    95size_t paf_props_get(const struct paf_props *props, const char *prop_name,
    +
    96 const struct paf_value **values, size_t capacity);
    +
    108const struct paf_value *paf_props_get_one(const struct paf_props *props,
    +
    109 const char *prop_name);
    +
    110
    +
    114typedef void (*paf_props_foreach_cb)(const char *prop_name,
    +
    115 const struct paf_value *prop_value,
    +
    116 void *user);
    +
    117
    +
    130void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb,
    +
    131 void *user);
    +
    132
    +
    141bool paf_props_equal(const struct paf_props *props_a,
    +
    142 const struct paf_props *props_b);
    +
    143
    +
    154size_t paf_props_num_values(const struct paf_props *props);
    +
    155
    +
    163size_t paf_props_num_names(const struct paf_props *props);
    +
    164
    +
    172struct paf_props *paf_props_clone(const struct paf_props *orig);
    +
    173
    +
    182void paf_props_destroy(struct paf_props *props);
    +
    183
    +
    184#ifdef __cplusplus
    +
    185}
    +
    186#endif
    +
    187#endif
    +
    struct paf_props * paf_props_clone(const struct paf_props *orig)
    +
    bool paf_props_equal(const struct paf_props *props_a, const struct paf_props *props_b)
    +
    void paf_props_add_str(struct paf_props *props, const char *name, const char *value)
    +
    size_t paf_props_num_values(const struct paf_props *props)
    +
    size_t paf_props_get(const struct paf_props *props, const char *prop_name, const struct paf_value **values, size_t capacity)
    +
    const struct paf_value * paf_props_get_one(const struct paf_props *props, const char *prop_name)
    +
    struct paf_props * paf_props_create(void)
    +
    void paf_props_add_int64(struct paf_props *props, const char *name, int64_t value)
    +
    void paf_props_destroy(struct paf_props *props)
    +
    void paf_props_foreach(const struct paf_props *props, paf_props_foreach_cb cb, void *user)
    +
    void paf_props_add(struct paf_props *props, const char *name, const struct paf_value *value)
    +
    void(* paf_props_foreach_cb)(const char *prop_name, const struct paf_value *prop_value, void *user)
    Definition paf_props.h:114
    +
    size_t paf_props_num_names(const struct paf_props *props)
    +
    Pathfinder Property Value API.
    +
    + + + + diff --git a/doc/v1.1.9/paf__value_8h.html b/doc/v1.1.9/paf__value_8h.html new file mode 100644 index 0000000..08c654a --- /dev/null +++ b/doc/v1.1.9/paf__value_8h.html @@ -0,0 +1,355 @@ + + + + + + + +libpaf: include/paf_value.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    paf_value.h File Reference
    +
    +
    + +

    Pathfinder Property Value API. +More...

    +
    #include <stdbool.h>
    +#include <stdint.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool paf_value_is_int64 (const struct paf_value *value)
     
    bool paf_value_is_str (const struct paf_value *value)
     
    struct paf_value * paf_value_int64_create (int64_t value)
     
    int64_t paf_value_int64 (const struct paf_value *value)
     
    struct paf_value * paf_value_str_create (const char *value)
     
    const char * paf_value_str (const struct paf_value *value)
     
    bool paf_value_equal (const struct paf_value *value_a, const struct paf_value *value_b)
     
    struct paf_value * paf_value_clone (const struct paf_value *orig)
     
    void paf_value_destroy (struct paf_value *value)
     
    +

    Detailed Description

    +

    Pathfinder Property Value API.

    +

    Service properties can be either integer or a string.

    +

    Function Documentation

    + +

    ◆ paf_value_is_int64()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_int64 (const struct paf_value * value)
    +
    +

    Checks if the value is an integer.

    +
    Returns
    Returns true if value is an integer, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_is_str()

    + +
    +
    + + + + + + + + +
    bool paf_value_is_str (const struct paf_value * value)
    +
    +

    Checks if the value is a string.

    +
    Returns
    Returns true if value is a string, or false otherwise.
    + +
    +
    + +

    ◆ paf_value_int64_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_int64_create (int64_t value)
    +
    +

    Creates an integer value.

    +
    Parameters
    + + +
    [in]valueThe 64-bit value used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the integer type.
    + +
    +
    + +

    ◆ paf_value_int64()

    + +
    +
    + + + + + + + + +
    int64_t paf_value_int64 (const struct paf_value * value)
    +
    +

    Retrieves the integer value of value.

    +
    Parameters
    + + +
    [in]valueA value of type integer.
    +
    +
    +
    Returns
    Returns the 64-bit signed value of value.
    + +
    +
    + +

    ◆ paf_value_str_create()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_str_create (const char * value)
    +
    +

    Creates a string value.

    +
    Parameters
    + + +
    [in]valueThe string to be copied and used to initialize value.
    +
    +
    +
    Returns
    Returns a value instance of the string type.
    + +
    +
    + +

    ◆ paf_value_str()

    + +
    +
    + + + + + + + + +
    const char * paf_value_str (const struct paf_value * value)
    +
    +

    Retrieves the string of value.

    +

    The returned point should not be written to, and not bee freed by the caller.

    +
    Parameters
    + + +
    [in]valueA value of type string.
    +
    +
    +
    Returns
    Returns a read-only pointer to the string value of value.
    + +
    +
    + +

    ◆ paf_value_equal()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool paf_value_equal (const struct paf_value * value_a,
    const struct paf_value * value_b 
    )
    +
    +

    Compares two values for equality.

    +

    The values must be of the same type and have the same value in order to be considered equal.

    +
    Parameters
    + + + +
    [in]value_aA value.
    [in]value_bAnother (or the same) value.
    +
    +
    +
    Returns
    Returns true if value_a and value_b are equal, false otherwise.
    + +
    +
    + +

    ◆ paf_value_clone()

    + +
    +
    + + + + + + + + +
    struct paf_value * paf_value_clone (const struct paf_value * orig)
    +
    +

    Returns a copy of the supplied value.

    +
    Parameters
    + + +
    [in]origThe value to be copied.
    +
    +
    +
    Returns
    Returns a copy of the value.
    + +
    +
    + +

    ◆ paf_value_destroy()

    + +
    +
    + + + + + + + + +
    void paf_value_destroy (struct paf_value * value)
    +
    +

    Destroys a value instance.

    +

    This function destroys the value instance and frees all the resources associated with it.

    +
    Parameters
    + + +
    [in]valueThe value.
    +
    +
    + +
    +
    +
    + + + + diff --git a/doc/v1.1.9/paf__value_8h_source.html b/doc/v1.1.9/paf__value_8h_source.html new file mode 100644 index 0000000..35ccc74 --- /dev/null +++ b/doc/v1.1.9/paf__value_8h_source.html @@ -0,0 +1,139 @@ + + + + + + + +libpaf: include/paf_value.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    libpaf 1.1.9 +
    +
    +
    + + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    paf_value.h
    +
    +
    +Go to the documentation of this file.
    1/*
    +
    2 * SPDX-License-Identifier: BSD-3-Clause
    +
    3 * Copyright(c) 2020 Ericsson AB
    +
    4 */
    +
    5
    +
    6#ifndef PAF_VALUE_H
    +
    7#define PAF_VALUE_H
    +
    8#ifdef __cplusplus
    +
    9extern "C" {
    +
    10#endif
    +
    11
    +
    19#include <stdbool.h>
    +
    20#include <stdint.h>
    +
    21
    +
    22struct paf_value;
    +
    23
    +
    24
    +
    30bool paf_value_is_int64(const struct paf_value *value);
    +
    36bool paf_value_is_str(const struct paf_value *value);
    +
    37
    +
    45struct paf_value *paf_value_int64_create(int64_t value);
    +
    46
    +
    54int64_t paf_value_int64(const struct paf_value *value);
    +
    55
    +
    63struct paf_value *paf_value_str_create(const char *value);
    +
    64
    +
    75const char *paf_value_str(const struct paf_value *value);
    +
    76
    +
    88bool paf_value_equal(const struct paf_value *value_a,
    +
    89 const struct paf_value *value_b);
    +
    90
    +
    91
    +
    99struct paf_value *paf_value_clone(const struct paf_value *orig);
    +
    100
    +
    109void paf_value_destroy(struct paf_value *value);
    +
    110
    +
    111#ifdef __cplusplus
    +
    112}
    +
    113#endif
    +
    114#endif
    +
    struct paf_value * paf_value_clone(const struct paf_value *orig)
    +
    struct paf_value * paf_value_str_create(const char *value)
    +
    bool paf_value_equal(const struct paf_value *value_a, const struct paf_value *value_b)
    +
    struct paf_value * paf_value_int64_create(int64_t value)
    +
    bool paf_value_is_str(const struct paf_value *value)
    +
    const char * paf_value_str(const struct paf_value *value)
    +
    bool paf_value_is_int64(const struct paf_value *value)
    +
    void paf_value_destroy(struct paf_value *value)
    +
    int64_t paf_value_int64(const struct paf_value *value)
    +
    + + + + diff --git a/doc/v1.1.9/plus.svg b/doc/v1.1.9/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/doc/v1.1.9/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.9/plusd.svg b/doc/v1.1.9/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/doc/v1.1.9/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/doc/v1.1.9/search/all_0.js b/doc/v1.1.9/search/all_0.js new file mode 100644 index 0000000..bcb0fa4 --- /dev/null +++ b/doc/v1.1.9/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['and_20multihomed_20servers_0',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['api_1',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.9/search/all_1.js b/doc/v1.1.9/search/all_1.js new file mode 100644 index 0000000..eca0a39 --- /dev/null +++ b/doc/v1.1.9/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['configuration_1',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['connection_20reestablishment_2',['Connection Reestablishment',['../index.html#reconnect',1,'']]] +]; diff --git a/doc/v1.1.9/search/all_2.js b/doc/v1.1.9/search/all_2.js new file mode 100644 index 0000000..a16ed9a --- /dev/null +++ b/doc/v1.1.9/search/all_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['discovery_20domains_0',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['dns_20and_20multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['domain_20configuration_2',['Domain Configuration',['../index.html#domain_conf',1,'']]], + ['domain_20file_20rescan_3',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['domains_4',['Service Discovery Domains',['../index.html#domains',1,'']]] +]; diff --git a/doc/v1.1.9/search/all_3.js b/doc/v1.1.9/search/all_3.js new file mode 100644 index 0000000..adfd978 --- /dev/null +++ b/doc/v1.1.9/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['file_20format_0',['File Format',['../index.html#domain_file_format',1,'']]], + ['file_20rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]], + ['format_2',['File Format',['../index.html#domain_file_format',1,'']]] +]; diff --git a/doc/v1.1.9/search/all_4.js b/doc/v1.1.9/search/all_4.js new file mode 100644 index 0000000..32d8d9a --- /dev/null +++ b/doc/v1.1.9/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]], + ['liveness_20tracking_1',['Liveness Tracking',['../index.html#liveness',1,'']]] +]; diff --git a/doc/v1.1.9/search/all_5.js b/doc/v1.1.9/search/all_5.js new file mode 100644 index 0000000..6e12e6d --- /dev/null +++ b/doc/v1.1.9/search/all_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['multi_20thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['multihomed_20servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]] +]; diff --git a/doc/v1.1.9/search/all_6.js b/doc/v1.1.9/search/all_6.js new file mode 100644 index 0000000..72f1f2d --- /dev/null +++ b/doc/v1.1.9/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['overview_0',['Overview',['../index.html#overview',1,'']]] +]; diff --git a/doc/v1.1.9/search/all_7.js b/doc/v1.1.9/search/all_7.js new file mode 100644 index 0000000..139465b --- /dev/null +++ b/doc/v1.1.9/search/all_7.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fattach_1',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_2',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_3',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_4',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_5',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmatch_2eh_6',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fmatch_5fcb_7',['paf_match_cb',['../paf__match_8h.html#ad3e0d3abdf67fe1460523b51f6cd6817',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_8',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fappeared_9',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_10',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_11',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]], + ['paf_5fmodify_12',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_13',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_2eh_14',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fprops_5fadd_15',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_16',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_17',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_18',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_19',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_20',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_21',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_22',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_5fcb_23',['paf_props_foreach_cb',['../paf__props_8h.html#aeb713374c6be1fe6363ec032e3eba9cc',1,'paf_props.h']]], + ['paf_5fprops_5fget_24',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_25',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_26',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_27',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_28',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_29',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_30',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_31',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_32',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_2eh_33',['paf_value.h',['../paf__value_8h.html',1,'']]], + ['paf_5fvalue_5fclone_34',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_35',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_36',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_37',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_38',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_39',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_40',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_41',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_42',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]], + ['pathfinder_20client_20library_20api_43',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.9/search/all_8.js b/doc/v1.1.9/search/all_8.js new file mode 100644 index 0000000..5a11e43 --- /dev/null +++ b/doc/v1.1.9/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reestablishment_0',['Connection Reestablishment',['../index.html#reconnect',1,'']]], + ['rescan_1',['Domain File Rescan',['../index.html#rescan',1,'']]] +]; diff --git a/doc/v1.1.9/search/all_9.js b/doc/v1.1.9/search/all_9.js new file mode 100644 index 0000000..6cf75f3 --- /dev/null +++ b/doc/v1.1.9/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['servers_1',['DNS and Multihomed Servers',['../index.html#multihoming',1,'']]], + ['service_20discovery_20domains_2',['Service Discovery Domains',['../index.html#domains',1,'']]], + ['service_20ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.9/search/all_a.js b/doc/v1.1.9/search/all_a.js new file mode 100644 index 0000000..a57ca9e --- /dev/null +++ b/doc/v1.1.9/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['thread_20safety_0',['Multi-thread Safety',['../index.html#thread_safety',1,'']]], + ['tracing_1',['Tracing',['../index.html#tracing',1,'']]], + ['tracking_2',['Liveness Tracking',['../index.html#liveness',1,'']]], + ['ttl_3',['Service TTL',['../index.html#ttl',1,'']]] +]; diff --git a/doc/v1.1.9/search/close.svg b/doc/v1.1.9/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/doc/v1.1.9/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/doc/v1.1.9/search/enums_0.js b/doc/v1.1.9/search/enums_0.js new file mode 100644 index 0000000..bcc805c --- /dev/null +++ b/doc/v1.1.9/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_0',['paf_match_type',['../paf__match_8h.html#a10a0716c053f96372ef811267909daac',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.9/search/enumvalues_0.js b/doc/v1.1.9/search/enumvalues_0.js new file mode 100644 index 0000000..1fe1b29 --- /dev/null +++ b/doc/v1.1.9/search/enumvalues_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['paf_5fmatch_5ftype_5fappeared_0',['paf_match_type_appeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacabbe8afe922c1adee78e99e514563ef1f',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fdisappeared_1',['paf_match_type_disappeared',['../paf__match_8h.html#a10a0716c053f96372ef811267909daaca393b65ead3a16a8935da8ef22860fee1',1,'paf_match.h']]], + ['paf_5fmatch_5ftype_5fmodified_2',['paf_match_type_modified',['../paf__match_8h.html#a10a0716c053f96372ef811267909daacac011d75c53e3148eabb0409e38556eb9',1,'paf_match.h']]] +]; diff --git a/doc/v1.1.9/search/files_0.js b/doc/v1.1.9/search/files_0.js new file mode 100644 index 0000000..208f90a --- /dev/null +++ b/doc/v1.1.9/search/files_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['paf_2eh_0',['paf.h',['../paf_8h.html',1,'']]], + ['paf_5fmatch_2eh_1',['paf_match.h',['../paf__match_8h.html',1,'']]], + ['paf_5fprops_2eh_2',['paf_props.h',['../paf__props_8h.html',1,'']]], + ['paf_5fvalue_2eh_3',['paf_value.h',['../paf__value_8h.html',1,'']]] +]; diff --git a/doc/v1.1.9/search/functions_0.js b/doc/v1.1.9/search/functions_0.js new file mode 100644 index 0000000..283477a --- /dev/null +++ b/doc/v1.1.9/search/functions_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['paf_5fattach_0',['paf_attach',['../paf_8h.html#a52fec2c02be95b483132e4637d73a590',1,'paf.h']]], + ['paf_5fclose_1',['paf_close',['../paf_8h.html#ac41d8efd6e153e980cc5222ccb1a8617',1,'paf.h']]], + ['paf_5fdetach_2',['paf_detach',['../paf_8h.html#aac92ff44b38f953d7be27e195fa7b9b3',1,'paf.h']]], + ['paf_5ffd_3',['paf_fd',['../paf_8h.html#a35d24ee6fc4307c4121a36582616167a',1,'paf.h']]], + ['paf_5ffilter_5fescape_4',['paf_filter_escape',['../paf_8h.html#acde67479418f442ee49307378efbd5c4',1,'paf.h']]], + ['paf_5fmodify_5',['paf_modify',['../paf_8h.html#a78c54a2a7b1a32c0f7633677adc8db5c',1,'paf.h']]], + ['paf_5fprocess_6',['paf_process',['../paf_8h.html#a7077572c17922c6c07c993646fe26976',1,'paf.h']]], + ['paf_5fprops_5fadd_7',['paf_props_add',['../paf__props_8h.html#ae3b4cdc3cf718c0dfb4b7afd1b622f59',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fint64_8',['paf_props_add_int64',['../paf__props_8h.html#aa86577bfdae3375650532c72fbcef63e',1,'paf_props.h']]], + ['paf_5fprops_5fadd_5fstr_9',['paf_props_add_str',['../paf__props_8h.html#a41671f726f81be3d9118a34cb3d719ab',1,'paf_props.h']]], + ['paf_5fprops_5fclone_10',['paf_props_clone',['../paf__props_8h.html#a063adc2e36aeedae05396e1a24a8e98e',1,'paf_props.h']]], + ['paf_5fprops_5fcreate_11',['paf_props_create',['../paf__props_8h.html#a983bc7e25d341ed2598ca18ee56fc002',1,'paf_props.h']]], + ['paf_5fprops_5fdestroy_12',['paf_props_destroy',['../paf__props_8h.html#aad06c52d91d00bbcc453dede2226c6c3',1,'paf_props.h']]], + ['paf_5fprops_5fequal_13',['paf_props_equal',['../paf__props_8h.html#a2768fc3fb8263ef3db95df2674e92bd7',1,'paf_props.h']]], + ['paf_5fprops_5fforeach_14',['paf_props_foreach',['../paf__props_8h.html#acf1093243d4d5469bd65abded6c770e5',1,'paf_props.h']]], + ['paf_5fprops_5fget_15',['paf_props_get',['../paf__props_8h.html#a6730267100ac570731439f12e8260e0b',1,'paf_props.h']]], + ['paf_5fprops_5fget_5fone_16',['paf_props_get_one',['../paf__props_8h.html#a8dc10a4b246f22a6fccde83a01a169e0',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fnames_17',['paf_props_num_names',['../paf__props_8h.html#aec67730497016e81a230603e69ae1767',1,'paf_props.h']]], + ['paf_5fprops_5fnum_5fvalues_18',['paf_props_num_values',['../paf__props_8h.html#a43ec2950a95934d97786bf47ef3275e6',1,'paf_props.h']]], + ['paf_5fpublish_19',['paf_publish',['../paf_8h.html#a0882224e814007bc8d60aa951e432df6',1,'paf.h']]], + ['paf_5fset_5fttl_20',['paf_set_ttl',['../paf_8h.html#ac5a34f3d8c4ed24ff39b06015a128cd6',1,'paf.h']]], + ['paf_5fsubscribe_21',['paf_subscribe',['../paf_8h.html#ad53fc37d6f1e033c09402cbdad77c695',1,'paf.h']]], + ['paf_5funpublish_22',['paf_unpublish',['../paf_8h.html#ae0218cebb94680cdf93d74b4cc819343',1,'paf.h']]], + ['paf_5funsubscribe_23',['paf_unsubscribe',['../paf_8h.html#a434fbebb05a1ab2c5e4ed1bceb7f977f',1,'paf.h']]], + ['paf_5fvalue_5fclone_24',['paf_value_clone',['../paf__value_8h.html#a04bc15bed2369039b4af8ecd92b8d03a',1,'paf_value.h']]], + ['paf_5fvalue_5fdestroy_25',['paf_value_destroy',['../paf__value_8h.html#af5c097403f3a7e4a09d6b5f1d9173ddf',1,'paf_value.h']]], + ['paf_5fvalue_5fequal_26',['paf_value_equal',['../paf__value_8h.html#a4906e6fc214d3617853d75a6ecbb17b2',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_27',['paf_value_int64',['../paf__value_8h.html#afe65c92ff6085b42af3e4e4451cc67d8',1,'paf_value.h']]], + ['paf_5fvalue_5fint64_5fcreate_28',['paf_value_int64_create',['../paf__value_8h.html#a655ed99be62ad54e46308f7c518b4bce',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fint64_29',['paf_value_is_int64',['../paf__value_8h.html#ab7b9815d24438fc4d808079fe0b621f9',1,'paf_value.h']]], + ['paf_5fvalue_5fis_5fstr_30',['paf_value_is_str',['../paf__value_8h.html#a7c28f32f534e30924d62db939dd08af6',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_31',['paf_value_str',['../paf__value_8h.html#a7d8d229475929ac93a4b550135f327ac',1,'paf_value.h']]], + ['paf_5fvalue_5fstr_5fcreate_32',['paf_value_str_create',['../paf__value_8h.html#a068d659f6e89a947f7c7e804b9456926',1,'paf_value.h']]] +]; diff --git a/doc/v1.1.9/search/mag.svg b/doc/v1.1.9/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/doc/v1.1.9/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.9/search/mag_d.svg b/doc/v1.1.9/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/doc/v1.1.9/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/doc/v1.1.9/search/mag_sel.svg b/doc/v1.1.9/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/doc/v1.1.9/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.9/search/mag_seld.svg b/doc/v1.1.9/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/doc/v1.1.9/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/doc/v1.1.9/search/pages_0.js b/doc/v1.1.9/search/pages_0.js new file mode 100644 index 0000000..a063ae3 --- /dev/null +++ b/doc/v1.1.9/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.9/search/pages_1.js b/doc/v1.1.9/search/pages_1.js new file mode 100644 index 0000000..091026f --- /dev/null +++ b/doc/v1.1.9/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.9/search/pages_2.js b/doc/v1.1.9/search/pages_2.js new file mode 100644 index 0000000..015f487 --- /dev/null +++ b/doc/v1.1.9/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.9/search/pages_3.js b/doc/v1.1.9/search/pages_3.js new file mode 100644 index 0000000..6ab0121 --- /dev/null +++ b/doc/v1.1.9/search/pages_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pathfinder_20client_20library_20api_0',['Pathfinder Client Library API',['../index.html',1,'']]] +]; diff --git a/doc/v1.1.9/search/search.css b/doc/v1.1.9/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/doc/v1.1.9/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/v1.1.9/search/search.js b/doc/v1.1.9/search/search.js new file mode 100644 index 0000000..6fd40c6 --- /dev/null +++ b/doc/v1.1.9/search/search.js @@ -0,0 +1,840 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/splitbard.png b/doc/v1.1.9/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/sync_off.png b/doc/v1.1.9/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/sync_on.png b/doc/v1.1.9/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/tab_a.png b/doc/v1.1.9/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/tab_ad.png b/doc/v1.1.9/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/tab_s.png b/doc/v1.1.9/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/tab_sd.png b/doc/v1.1.9/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/doc/v1.1.9/tabs.css b/doc/v1.1.9/tabs.css new file mode 100644 index 0000000..df7944b --- /dev/null +++ b/doc/v1.1.9/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:none}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}}