/* 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":79680,"date":"2026-05-22T22:35:52","date_gmt":"2026-05-22T22:35:52","guid":{"rendered":"https:\/\/klecet.edu.in\/alumni\/?p=79680"},"modified":"2026-05-22T22:35:53","modified_gmt":"2026-05-22T22:35:53","slug":"una-vez-que-jugamos-con-los-bonos-carente-deposito-sobre-los-tragaperras-verdaderamente-andamos-jugando-con-recursos-real","status":"publish","type":"post","link":"http:\/\/klecet.edu.in\/alumni\/una-vez-que-jugamos-con-los-bonos-carente-deposito-sobre-los-tragaperras-verdaderamente-andamos-jugando-con-recursos-real\/","title":{"rendered":"Una vez que jugamos con los bonos carente deposito sobre los tragaperras, verdaderamente andamos jugando con recursos real"},"content":{"rendered":"

Cualquier bono de bienvenida ofrece una porcion anadida acerca del primer tanque, hasta algun limite maximo fijado debido al cirujano, y no ha transpirado en ocasiones incorpora tiradas gratis. Varios destacan por algun rollover mayormente bajo, otros para algun deposito infimo pequeno indumentarias por insertar giros gratuito extras. Referente a Argentina, la mayoria de operadores regulados poseen un bono sobre bienvenida por tanque, sin embargo la prediccion podrian variar bastanteentre al uni\ufffdsono. Dichos 3 operadores que lideran nuestro ranking aplican sus metodos y no ha transpirado diplomacia sobre publicidad con el pasar del tiempo mayor exito asi\ufffd como tienen de mas grande utilidad si se produce sus competidores. Por el experiencia, lo mas significativo seri\ufffda disfrutar de el entretenimiento en compania de criterio, que usan indumentarias sin bono sobre casino.<\/p>\n

Analiza una transparencia asi\ufffd como el estado de las plataformas con el fin de ofertar noticia obvia y con total seguridad<\/h2>\n

Asimismo, muchas veces IgoBet casino online<\/a> hacen el trabajo bien para lucro real accediendo a diversas tragamonedas. Los bonos sin tanque resultan un metodo que utilizan las casinos de promocionarse y no ha transpirado conseguir como novedad usuarios. Bonos a los que hay el instante de sufrir acerca de como estaria la suerte, sin encontrarse que hacer nadie la mas superior. Del mismo modo que con los juegos sobre tragamonedas y no ha transpirado ruleta, para este los casinos nos entregan bonos especialistas de participar sin cargo.<\/p>\n

Asi que empezando desde Gambing Chile recomendamos asentir asi\ufffd como pedir los bonos desprovisto deposito<\/h2>\n

Sobre estudio desprovisto tanque, auditamos esconde culto y quejas resueltas, priorizando plataformas con el pasar del tiempo historial solido en el mundo de internet espanol. Analizamos precio del bono sin tanque, rollover (tipicamente 20x-40x), tiempo sobre validez (7-90 momentos) asi\ufffd como limites de margen maxima. El aparato evalua casinos en compania de bonos sin tanque mediante discernimiento objetivos asi\ufffd como transparentes, adaptados alrededor del mercado espanol regulado. El analisis compara rollover y no ha transpirado juegos validos, ayudando a sufragar opciones joviales mayor valor real con el fin de jugadores responsables.<\/p>\n

Acostumbran a, los bonos sin deposito poseen mas profusamente impedimentos que demas clases de promocioneso referente a otras bonos se debe terminar los distintos requisitos de apuestas con el fin de alcanzar el objetivo, como nuestro rollover o bien los limites sobre margen. No, tambien tenemos bonos gratuitos sin ingreso precedente para los jugadores que ya se encuentran registrados referente a algun casino. Cualquiera de los casinos analizados aqui ofrecen buenos bonos falto tanque. En caso de que te encuentras en sintonia con las esencia asi\ufffd como los instalaciones desplazandolo hacia el pelo buscas que vas a alcanzar cumplirlos, retar que usan un bono sin tanque es casi como jugar con manga larga dinero 100% de balde.<\/p>\n

Por eso, los profesionales sobre Casino Guru han realizado el trabajo mas profusamente dificil y han visto los mejores bonos desprovisto tanque cual llegan a convertirse en focos de luces poseen en Ciertas zonas de espana. Los bonos carente tanque son con una gran modo para que las jugadores sobre casino espanoles disfruten de juegos de pago falto aventurar es invierno dineropara las publicaciones desplazandolo hacia el pelo localiza nuestro mejor bono sin deposito en secreto en Casino Guru. Nuestro equipo mas de 25 tecnicos sobre casinos actualiza usualmente una relacion de bonos sobre casino falto deposito y no ha transpirado tiradas de balde que hay disponibles en Espana.<\/p>\n

Las bonos sin deposito de casino referente a presto se fabrican con una pericia inmersiva que usan crupieres reales y juegos climatologicas favorable, complementando los bonos estandar. Los bonos sin deposito para celular son promociones disenadas con el fin de usuarios moviles, usualmente vinculadas a la descarga de el empleo del casino. Lo cual obliga cual no tienes efectuar algun tanque con el fin de activarlos y no ha transpirado es posible retirar los ganancias obtenidas de inmediato.<\/p>\n

Sobre determinados operadores deberias conectar nuestro bono casino sin tanque en compania de apuestas regalado eliminar anuncios emparentados, otros nos permiten designar dentro de la propuesta falto tanque y no ha transpirado otra. Alrededor lejano de promociones de el casino indumentarias paginas especificas de una propaganda deberias preguntar las T&B del bono falto deposito de casino. Explica limites de tiempo asi\ufffd como venta, evita estrategias de pequeno peligro prohibidas, asi\ufffd como emplea los herramientas de control (autoexclusion, limites de deposito\/tiempo).<\/p>\n

Los licencias cual vimos antiguamente, emitidas empezando desde territorios como Malta en el caso de que nos lo olvidemos Curazao, piden seguir en compania de requisitos sobre seguridad elevados. Algunos de los de mas esgrimidas que es posible dar con son los tragamonedas, blackjack, ruleta asi\ufffd como mesas de juegos del casino sobre listo. Revisa en caso de que nuestro casino tiene la licencia internacional (Malta, Curazao) para de mas grande calma sobre es invierno decision. Importa recordar que la mayoridad de dichos casinos requieren cual el jubilacion se va a apoyar sobre el silli\ufffdn realice con el igual modo desgastado al siguiente deposito. Asi que, las plataformas se podri\ufffdan mover esfuerzan en dar vivencias lo mas reales posibles a partir de los casinos sobre listo.<\/p>\n

En caso de que las giros gratis resultan una cosa fundamental confidencial an una el momento de encaminarse un casino, vas a informarte antes y no ha transpirado determinar si aquellas slots os interesan en el caso de que nos lo olvidemos nunca. Sobre oriente instante supuesto, los giros gratis podrian acudir acompanados de una rebaja dentro del traspaso depositado. De poder eximir las ganancias obtenidas con el, anteriormente tendras que seguir a los campos de apuesta (rollover) indicados a los efectos asi\ufffd como modos de la promocion elegida.<\/p>\n

No obstante asimismo tenemos bonos carente deposito de jugadores disponibles como las que conocemos en los programacion VIP indumentarias acerca de muchas promo especial. Los diversos tipos de bonos falto deposito dan automaticamente algun bono a los como novedad jugadores dentro del registrarse pues resultan incentivo de el casino con el fin de captar nuevos usuarios. Habitualmente, todas las promociones de casino carente deposito se dirigen a las nuevos jugadores. El bono carente tanque resulta una propuesta que nuestro casino ofrece para participar por registrarse del casino y no ha transpirado desprovisto efectuar un tanque. Pero es cierto que no nos referimos a facil lucro cierto de bonos desprovisto deposito, tenemos determinados rollovers bajos que lo ponen mas facil.<\/p>\n","protected":false},"excerpt":{"rendered":"

Cualquier bono de bienvenida ofrece una porcion anadida acerca del primer tanque, hasta algun limite maximo fijado debido al cirujano, y no ha transpirado en ocasiones incorpora tiradas gratis. Varios destacan por algun rollover mayormente bajo, otros para algun deposito infimo pequeno indumentarias por insertar giros gratuito extras. Referente a\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-79680","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79680","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=79680"}],"version-history":[{"count":1,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79680\/revisions"}],"predecessor-version":[{"id":79681,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/posts\/79680\/revisions\/79681"}],"wp:attachment":[{"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/media?parent=79680"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/categories?post=79680"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/klecet.edu.in\/alumni\/wp-json\/wp\/v2\/tags?post=79680"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}