/* Widget Name: Button Description: Create a custom button with flexible styling, icon support, and click tracking functionality. Author: SiteOrigin Author URI: https://siteorigin.com Documentation: https://siteorigin.com/widgets-bundle/button-widget-documentation/ Keywords: event, icon, link */ class SiteOrigin_Widget_Button_Widget extends SiteOrigin_Widget { public function __construct() { parent::__construct( 'sow-button', __( 'SiteOrigin Button', 'so-widgets-bundle' ), array( 'description' => __( 'Create a custom button with flexible styling, icon support, and click tracking functionality.', 'so-widgets-bundle' ), 'help' => 'https://siteorigin.com/widgets-bundle/button-widget-documentation/', ), array( ), false, plugin_dir_path( __FILE__ ) ); } public function get_settings_form() { return array( 'responsive_breakpoint' => array( 'type' => 'measurement', 'label' => __( 'Responsive Breakpoint', 'so-widgets-bundle' ), 'default' => '780px', 'description' => __( 'This setting controls when the Mobile Align setting will be used. The default value is 780px.', 'so-widgets-bundle' ), ), ); } public function initialize() { $this->register_frontend_styles( array( array( 'sow-button-base', plugin_dir_url( __FILE__ ) . 'css/style.css', array(), SOW_BUNDLE_VERSION, ), ) ); } public function get_widget_form() { return array( 'text' => array( 'type' => 'text', 'label' => __( 'Button Text', 'so-widgets-bundle' ), ), 'url' => array( 'type' => 'link', 'label' => __( 'Destination URL', 'so-widgets-bundle' ), 'allow_shortcode' => true, ), 'new_window' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Open in a new window', 'so-widgets-bundle' ), ), 'download' => array( 'type' => 'checkbox', 'default' => false, 'label' => __( 'Download', 'so-widgets-bundle' ), 'description' => __( 'The Destination URL will be downloaded when a user clicks on the button.', 'so-widgets-bundle' ), ), 'button_icon' => array( 'type' => 'section', 'label' => __( 'Icon', 'so-widgets-bundle' ), 'fields' => array( 'icon_selected' => array( 'type' => 'icon', 'label' => __( 'Icon', 'so-widgets-bundle' ), ), 'icon_color' => array( 'type' => 'color', 'label' => __( 'Icon Color', 'so-widgets-bundle' ), ), 'icon' => array( 'type' => 'media', 'label' => __( 'Image Icon', 'so-widgets-bundle' ), 'description' => __( 'Replaces the icon with your own image icon.', 'so-widgets-bundle' ), ), 'icon_placement' => array( 'type' => 'select', 'label' => __( 'Icon Placement', 'so-widgets-bundle' ), 'default' => 'left', 'options' => array( 'top' => __( 'Top', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'bottom' => __( 'Bottom', 'so-widgets-bundle' ), 'left' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), 'design' => array( 'type' => 'section', 'label' => __( 'Design and Layout', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'width' => array( 'type' => 'measurement', 'label' => __( 'Width', 'so-widgets-bundle' ), 'description' => __( 'Leave blank to let the button resize according to content.', 'so-widgets-bundle' ), ), 'align' => array( 'type' => 'select', 'label' => __( 'Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'mobile_align' => array( 'type' => 'select', 'label' => __( 'Mobile Align', 'so-widgets-bundle' ), 'default' => 'center', 'options' => array( 'left' => __( 'Left', 'so-widgets-bundle' ), 'right' => __( 'Right', 'so-widgets-bundle' ), 'center' => __( 'Center', 'so-widgets-bundle' ), 'justify' => __( 'Full Width', 'so-widgets-bundle' ), ), ), 'theme' => array( 'type' => 'select', 'label' => __( 'Button Theme', 'so-widgets-bundle' ), 'default' => 'flat', 'options' => array( 'atom' => __( 'Atom', 'so-widgets-bundle' ), 'flat' => __( 'Flat', 'so-widgets-bundle' ), 'wire' => __( 'Wire', 'so-widgets-bundle' ), ), ), 'button_color' => array( 'type' => 'color', 'label' => __( 'Button Color', 'so-widgets-bundle' ), ), 'text_color' => array( 'type' => 'color', 'label' => __( 'Text Color', 'so-widgets-bundle' ), ), 'hover' => array( 'type' => 'checkbox', 'default' => true, 'label' => __( 'Use hover effects', 'so-widgets-bundle' ), 'state_emitter' => array( 'callback' => 'conditional', 'args' => array( 'hover[show]: val', 'hover[hide]: ! val', ), ), ), 'hover_background_color' => array( 'type' => 'color', 'label' => __( 'Hover Background Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'hover_text_color' => array( 'type' => 'color', 'label' => __( 'Hover Text Color', 'so-widgets-bundle' ), 'state_handler' => array( 'hover[show]' => array( 'show' ), 'hover[hide]' => array( 'hide' ), ), ), 'font' => array( 'type' => 'font', 'label' => __( 'Font', 'so-widgets-bundle' ), 'default' => 'default', ), 'font_size' => array( 'type' => 'measurement', 'label' => __( 'Font Size', 'so-widgets-bundle' ), 'default' => '1em', ), 'icon_size' => array( 'type' => 'measurement', 'label' => __( 'Icon Size', 'so-widgets-bundle' ), 'default' => '1.3em', ), 'padding' => array( 'type' => 'measurement', 'label' => __( 'Padding', 'so-widgets-bundle' ), 'default' => '1em', ), 'rounding' => array( 'type' => 'multi-measurement', 'label' => __( 'Rounding', 'so-widgets-bundle' ), 'default' => '0.25em 0.25em 0.25em 0.25em', 'measurements' => array( 'top' => array( 'label' => __( 'Top', 'so-widgets-bundle' ), ), 'right' => array( 'label' => __( 'Right', 'so-widgets-bundle' ), ), 'bottom' => array( 'label' => __( 'Bottom', 'so-widgets-bundle' ), ), 'left' => array( 'label' => __( 'Left', 'so-widgets-bundle' ), ), ), ), ), ), 'attributes' => array( 'type' => 'section', 'label' => __( 'Other Attributes and SEO', 'so-widgets-bundle' ), 'hide' => true, 'fields' => array( 'id' => array( 'type' => 'text', 'label' => __( 'Button ID', 'so-widgets-bundle' ), 'description' => __( 'An ID attribute allows you to target this button in JavaScript.', 'so-widgets-bundle' ), ), 'classes' => array( 'type' => 'text', 'label' => __( 'Button Classes', 'so-widgets-bundle' ), 'description' => __( 'Additional CSS classes added to the button link.', 'so-widgets-bundle' ), ), 'title' => array( 'type' => 'text', 'label' => __( 'Title Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a title attribute to the button link.', 'so-widgets-bundle' ), ), 'on_click' => array( 'type' => 'text', 'label' => __( 'Onclick', 'so-widgets-bundle' ), 'description' => __( 'Run this JavaScript when the button is clicked. Ideal for tracking.', 'so-widgets-bundle' ), 'onclick' => true, ), 'rel' => array( 'type' => 'text', 'label' => __( 'Rel Attribute', 'so-widgets-bundle' ), 'description' => __( 'Adds a rel attribute to the button link.', 'so-widgets-bundle' ), ), ), ), ); } public function get_style_name( $instance ) { if ( empty( $instance['design']['theme'] ) ) { return 'atom'; } return $instance['design']['theme']; } /** * Get the variables for the Button Widget. * * @return array */ public function get_template_variables( $instance, $args ) { $button_attributes = array(); $attributes = $instance['attributes']; $classes = ! empty( $attributes['classes'] ) ? $attributes['classes'] : ''; if ( ! empty( $classes ) ) { $classes .= ' '; } $classes .= 'sowb-button ow-icon-placement-' . $instance['button_icon']['icon_placement']; if ( ! empty( $instance['design']['hover'] ) ) { $classes .= ' ow-button-hover'; } $button_attributes['class'] = implode( ' ', array_map( 'sanitize_html_class', explode( ' ', $classes ) ) ); if ( ! empty( $instance['new_window'] ) ) { $button_attributes['target'] = '_blank'; $button_attributes['rel'] = 'noopener noreferrer'; } if ( ! empty( $instance['download'] ) ) { $button_attributes['download'] = null; } if ( ! empty( $attributes['id'] ) ) { $button_attributes['id'] = $attributes['id']; } if ( ! empty( $attributes['title'] ) ) { $button_attributes['title'] = $attributes['title']; } if ( ! empty( $attributes['rel'] ) ) { if ( isset( $button_attributes['rel'] ) ) { $button_attributes['rel'] .= " $attributes[rel]"; } else { $button_attributes['rel'] = $attributes['rel']; } } $icon_image_url = ''; if ( ! empty( $instance['button_icon']['icon'] ) ) { $attachment = wp_get_attachment_image_src( $instance['button_icon']['icon'] ); if ( ! empty( $attachment ) ) { $icon_image_url = $attachment[0]; } } return array( 'button_attributes' => apply_filters( 'siteorigin_widgets_button_attributes', $button_attributes, $instance ), 'href' => ! empty( $instance['url'] ) ? $instance['url'] : '', 'on_click' => ! empty( $attributes['on_click'] ) ? $attributes['on_click'] : '', 'align' => $instance['design']['align'], 'icon_image_url' => $icon_image_url, 'icon' => $instance['button_icon']['icon_selected'], 'icon_color' => $instance['button_icon']['icon_color'], 'text' => $instance['text'], ); } /** * Get the variables that we'll be injecting into the less stylesheet. * * @return array */ public function get_less_variables( $instance ) { if ( empty( $instance ) || empty( $instance['design'] ) ) { return array(); } $text_color = isset( $instance['design']['text_color'] ) ? $instance['design']['text_color'] : ''; $button_color = isset( $instance['design']['button_color'] ) ? $instance['design']['button_color'] : ''; $less_vars = array( 'button_width' => isset( $instance['design']['width'] ) ? $instance['design']['width'] : '', 'button_color' => $button_color, 'text_color' => $text_color, 'icon_size' => ! empty( $instance['design']['icon_size'] ) ? $instance['design']['icon_size'] : '1.3em', 'hover_text_color' => ! empty( $instance['design']['hover_text_color'] ) ? $instance['design']['hover_text_color'] : $text_color, 'hover_background_color' => ! empty( $instance['design']['hover_background_color'] ) ? $instance['design']['hover_background_color'] : $button_color, 'font_size' => isset( $instance['design']['font_size'] ) ? $instance['design']['font_size'] : '', 'rounding' => isset( $instance['design']['rounding'] ) ? $instance['design']['rounding'] : '', 'padding' => isset( $instance['design']['padding'] ) ? $instance['design']['padding'] : '', 'has_text' => empty( $instance['text'] ) ? 'false' : 'true', 'responsive_breakpoint' => $this->get_global_settings( 'responsive_breakpoint' ), 'align' => ! empty( $instance['design']['align'] ) ? $instance['design']['align'] : 'center', 'mobile_align' => ! empty( $instance['design']['mobile_align'] ) ? $instance['design']['mobile_align'] : 'center', 'has_button_icon' => empty( $instance['button_icon']['icon_selected'] ) ? 'false' : 'true', ); if ( ! empty( $instance['design']['font'] ) ) { $font = siteorigin_widget_get_font( $instance['design']['font'] ); $less_vars['button_font'] = $font['family']; if ( ! empty( $font['weight'] ) ) { $less_vars['button_font_weight'] = $font['weight_raw']; $less_vars['button_font_style'] = $font['style']; } } return $less_vars; } /** * Make sure the instance is the most up to date version. * * @return mixed */ public function modify_instance( $instance ) { if ( empty( $instance ) ) { return array(); } $migrate_props = array( 'button_icon' => array( 'icon_selected', 'icon_color', 'icon', ), 'design' => array( 'align', 'theme', 'button_color', 'text_color', 'hover', 'hover_text_color', 'hover_background_color', 'font_size', 'rounding', 'padding', ), 'attributes' => array( 'id', ), ); foreach ( $migrate_props as $prop => $sub_props ) { if ( empty( $instance[ $prop ] ) ) { $instance[ $prop ] = array(); foreach ( $sub_props as $sub_prop ) { if ( isset( $instance[ $sub_prop ] ) ) { $instance[ $prop ][ $sub_prop ] = $instance[ $sub_prop ]; unset( $instance[ $sub_prop ] ); } } } } // Migrate onclick setting to prevent Wordfence flag. if ( ! empty( $instance['attributes'] ) && ! empty( $instance['attributes']['onclick'] ) ) { $instance['attributes']['on_click'] = $instance['attributes']['onclick']; } // If the mobile_align setting isn't set, set it to the same value as the align value. if ( ! empty( $instance['design'] ) && ! empty( $instance['design']['align'] ) && empty( $instance['design']['mobile_align'] ) ) { $instance['design']['mobile_align'] = $instance['design']['align']; } // Migrate predefined settings to more customizable settings. if ( ! empty( $instance['design']['font_size'] ) && is_numeric( $instance['design']['font_size'] ) ) { $instance['design']['font_size'] .= 'em'; } if ( ! empty( $instance['design']['padding'] ) && is_numeric( $instance['design']['padding'] ) ) { $instance['design']['padding'] .= 'em'; } if ( ! empty( $instance['design']['rounding'] ) && is_numeric( $instance['design']['rounding'] ) ) { $instance['design']['rounding'] = $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em ' . $instance['design']['rounding'] . 'em'; } if ( empty( $instance['design']['icon_size'] ) ) { $instance['design']['icon_size'] = '1.3em'; } return $instance; } public function get_form_teaser() { if ( class_exists( 'SiteOrigin_Premium' ) ) { return false; } return array( sprintf( __( 'Add a beautiful tooltip to the Button Widget with %sSiteOrigin Premium%s', 'so-widgets-bundle' ), '', '' ), ); } } siteorigin_widget_register( 'sow-button', __FILE__, 'SiteOrigin_Widget_Button_Widget' );{"id":72620,"date":"2026-05-22T22:06:32","date_gmt":"2026-05-22T22:06:32","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=72620"},"modified":"2026-05-22T22:06:33","modified_gmt":"2026-05-22T22:06:33","slug":"de-hecho-seri%ef%bf%bda-uno-de-los-bonos-sin-tanque-para-casino-mayormente-ti%ef%bf%bdpicos","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/de-hecho-seri%ef%bf%bda-uno-de-los-bonos-sin-tanque-para-casino-mayormente-ti%ef%bf%bdpicos\/","title":{"rendered":"De hecho, seri\ufffda uno de los bonos sin tanque para casino mayormente ti\ufffdpicos"},"content":{"rendered":"

El desarrollo para conseguir su bono desprovisto tanque referente a casinos online espanoles sigue un viaje definicion<\/h2>\n

Estas cartas suelen ser de un plus preestablecido e igualmente acostumbran an explicar determinados campos de postura. Por lo tanto, nadie pondri\ufffda en duda desde Optimobet recomendamos leer concienzudamente las palabras asi\ufffd como formas de todo publicidad en la cual accedas con el fin de eludir sorpresas.<\/p>\n

Uno de los de edad avanzada utiles de los casinos online, siempre ha sido el genial disparidad de bonos sobre casino. Los campos sobre envite sobra bajos resultan, asi\ufffd pues, sobra accesibles para los jugadores cual desean limitar la patologi\ufffda del tunel carpiano dispendio. Podras ver que hay en el comercio bonos sobre 50 giros gratuito carente tanque no obstante cual estan que hay en el comercio separado con el fin de juegos sobre banco.<\/p>\n

Menos liberacion, aunque a veces en su sitio<\/a> compania de campos sobre apuesta de mas bajos. De jugadores de Madrid, Barcelona u otra localidad espanola, seri\ufffda el metodo sobra con inteligencia sobre indagar novedosas alternativas acerca de 2026. Encontramos cual seis sobre gama masculina ofrecian un tipo sobre bono de balde sin tanque, por cinco\ufffd inclusive 30 giros gratuitos.<\/p>\n

Las bonos de bienvenida clasicos piden deposito precedente<\/h2>\n

No obstante las bonos falto deposito para casino en listo son poco comunes en Argentina, si existe promociones especiales referente a mesas de ruleta en internet. Las anuncios pueden darte recursos extra o en la barra tiradas gratuito, por eso es conveniente repasar la parte sobre promociones sobre su casinoprueba a como es propaganda se ha colmado en tu perfil de modo adecuada desplazandolo hacia el pelo seguir los campos de puesta con el fin de pedir tus ganancias. Variable tu bono sobre casino desprovisto deposito tras registrarte y no ha transpirado probar tu perfil. “De escoger que casinos carente tanque incluimos con listado, sabemos la importancia conveniente de estas ofertasparamos las decenas de bono, las campos, la decrepitud, sobre a que es lo primero? juegos puedes usarlos y no ha transpirado lo que se podri? conseguir verdaderamente”.<\/p>\n

No obstante ademas tenemos anuncios que le adjudican crisis a los juegos de tragaperras que hay disponibles alrededor sitio de el casino. En cierta ocasion seleccionado nuestro bono carente deposito, debes respetar aquellos instalaciones de la propaganda para canjearlo. Estas anuncios sin deposito poseen como objeto conseguir cual los usuarios inscribiri? registren al sitio de el casino o en la barra, en caso de que ya posean un perfil, impulsar dicho tarea. Nuestro bono sin deposito resulta una publicidad cual ofrece la ocasion de ganar premios reales falto urgencia que los jugadores inviertan las propios dinero.<\/p>\n

Ademas poseen la zapatilla y el pie ruleta de la fortuna cual ofrece premios periodicos y tambien en la posibilidad de aspirar a premios en eficaz beneficiandose las codigos sobre las depositos. Casino777 ofrece promociones temporales muy variadas y no ha transpirado que le adjudican algun genial abanillo de opciones alternativas a las jugadores. Tras eso recibiras sobre modo automatica cualquier bono cual posee una historia muy corta de 3 las jornadas de caducidad y no ha transpirado cuyos requisitos sobre postura resultan de situar cuarenta veces la cantidad del igual.<\/p>\n

Del ambiente de los casinos online, los bonos carente tanque se hallan transformado acerca de la instrumento incontenible de atraer en mas jugadores. Como podri\ufffda ser, si hallan trabajador la propuesta sobre tiradas gratuitas desprovisto apuestas asi\ufffd como hallan ganado alguna recursos, suele pasar las ganancias a su perfil. Debido a lo anterior, esta descuento es una de las recompensas promocionales sobra utilizadas acerca de las casinos en internet. Aunque de el notoriedad, algun bono desprovisto envite y no ha transpirado carente tanque no es en la mayoridad de los incidentes la mejor propuesta de bonos sobre cualquier casino online. Ademas, nada mas se podri? sacar este tipo de propuesta una vez para tu cuenta referente a algun resuelto casino en internet. Sin embargo estas bonificaciones deben muchas ventajas, ademi?s hay que ser conscientes varios problemas.<\/p>\n

Las bonos sin tanque para casino en presto poseen la destreza inmersiva con crupieres reales y no ha transpirado juegos de climatologia eficaz, complementando las bonos en serie. Las bonos desprovisto tanque y no ha transpirado las codigos de bonos resultan una posibilidad usual para recientes jugadores en las casinos online. Cualquier bono sin deposito resulta una promocion cual deja emplazar asi\ufffd como ganar referente a juegos baratos favorable en casinos en linea sin necesidad de elaborar un tanque. Por las docenas ofrecidos hasta las instalaciones de postura, los plazos sobre validez asi\ufffd como las juegos elegibles. En el realizar nuestro estudio, consideramos diversos aspectos, igual que una variedad sobre bonos, dicho desinteres, las requisitos sobre apuestas y no ha transpirado los plazos de validez. Alcanza inclusive $ningun,000 MXN referente a bonos desprovisto tanque desplazandolo hacia el pelo 10 free spins para percibir las excelentes juegos de casino falto emplear sobre tu bolsillo.<\/p>\n

Suelen no hablamos posible usar mas de algun bono falto tanque, pero alguna vez si hemos visto que cualquier igual casino, brinda dos bonos carente deposito. En las bonos en compania de tanque, nuestro componente debe ingresar recursos mismo para desbloquear la publicidad, entretanto cual en las bonos falto tanque no hay gasto inicial. En ocasiones, los bonos desprovisto tanque se encuentran que hay disponibles separado durante cualquier epoca extremadamente particular, como el saque de cualquier casino en el caso de que nos lo olvidemos una promocion justo ligada en algun evento concreto. Cualquier bono falto tanque es algun prototipo sobre bono sobre recibimiento que ofrecen determinados casinos online a sus cero millas gente y que deja participar sin realizar cualquier la mas superior de traspaso.<\/p>\n

En caso de que la propuesta promete dinero retirable sin situaciones nitidas, sugerimos repasar los terminos completos. Para replicar a la pregunta cual gran cantidad de jugadores hacen – \ufffd?se podri? eximir recursos positivo que usan algun bono desprovisto tanque en Portugal? Tu hemos comparado bonos carente deposito en Portugal con el fin de jugadores, seleccionando los mas grandes casinos. Aca te traemos las mejores recomendaciones con el fin de que disfrutes con el pasar del tiempo plenitud sobre tu bono sin deposito. Aquellos bonos carente deposito deben algun epoca de validez, que puede quedar dentro de los 14 y no ha transpirado 15 las jornadas. Una decision que nunca se encuentre mas es revisar los opiniones sobre otros jugadores sobre el casino.<\/p>\n","protected":false},"excerpt":{"rendered":"

El desarrollo para conseguir su bono desprovisto tanque referente a casinos online espanoles sigue un viaje definicion Estas cartas suelen ser de un plus preestablecido e igualmente acostumbran an explicar determinados campos de postura. Por lo tanto, nadie pondri\ufffda en duda desde Optimobet recomendamos leer concienzudamente las palabras asi\ufffd como\u2026<\/p>\n

Continue reading<\/span><\/i><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-72620","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/72620","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/comments?post=72620"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/72620\/revisions"}],"predecessor-version":[{"id":72621,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/72620\/revisions\/72621"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=72620"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=72620"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=72620"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}